繁体   English   中英

使用Shell脚本从另一个文件检查用户名和密码

[英]username and password checking from another file using shell script

我是Shell的新手,我想执行以下任务

一个shell程序,它接受用户名和密码,并用另一个文件中的一行(用于身份验证)检查$ username和$ password,我知道如何从用户那里获取用户名,但是如何检查另一个文件中的一行。 说我有一个名为username的文件(具有用户名)和名为password的文件(具有密码),如何检查文件中该行的$ username和该行的$ password

直接来自perl食谱:(我猜这不好,因为OP想要bash)

#!/usr/bin/perl -w
# 

checkuser - demonstrates reading and checking a user's password

use Term::ReadKey;

print "Enter your password: ";
ReadMode 'noecho';
$password = ReadLine 0;
chomp $password;
ReadMode 'normal';

print "\n";

($username, $encrypted) = ( getpwuid $< )[0,1];

if (crypt($password, $encrypted) ne $encrypted) {
    die "You are not $username\n";
} else {
    print "Welcome, $username\n";
}

超级基础,没有安全性,但是应该可以在文件中找到它们

我认为应该怎么做(单个文件)

echo 'Type username'
read username
echo 'Type Password'
read -s Password
awk /^$username.*$Password$/' {print "found"}' loginfile

对于OP设置文件的方式

echo 'Type username'
read username
echo 'Type Password'
read -s Password
UserCheck=$(awk /^$username$/' {print "1"}' Username.txt)
PassCheck=$(awk /^$Password$/' {print "1"}' Password.txt)

if [[ UserCheck -eq 1 && PassCheck -eq 1 ]]; then
     echo "Found"
else
     echo "not found"
fi

这是一个示例脚本,提示用户输入用户名和密码,然后将它们与从两个文件中获取的用户名和密码进行比较:

#!/bin/bash

# prompt the user to enter a username and password
read -p "Username: " inputUsername
read -s -p "Password: " inputPassword

# read the username and password from file
username=$(<username.txt)
password=$(<password.txt)

# compare
if [[ "$inputUsername" == "$username" && "$inputPassword" == "$password" ]]
then
    echo "valid username and password"
else
    echo "invalid username and password"
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM