一个简单的密码校验的脚本,效果是弹窗一个GUI页面,让用户输入用户名和密码。然后和获取到的远端服务器上的密码进行比较,如果一致呢,就执行后续的操作,否则就继续让用户输入,输错三次就退出执行,当获取不到远程的密码的时候呢,也直接执行后续操作。
脚本如下:
#!/bin/bash
if [ "$1" != "none" ]; then
#wget 后面的路径应该改为nginx文件服务器的地址/文件路径,“--output-document -” 的意思是读取内容而不保存到本地
pass=`wget -q "http://192.168.50.210:6868/password.cfg" --output-document -`
if [[ $? -ne 0 ]]; then
return 1
fi
Getting_Input() {
FORM=$(zenity --forms --title="log on $i/3" \
--text="Please enter username and password: " \
--add-entry="username" \
--add-password="password" \
--width=400 \
--height=200)
if [[ $? -ne 0 ]]; then
exit 0
fi
USERNAME=$(echo $FORM | awk -F'|' '{print $1}')
PASSWORD=$(echo $FORM | awk -F'|' '{print $2}')
}
Check(){
iterations=3
for ((i=1; i<=$iterations; i++))
do
Getting_Input
if [[ -n "$USERNAME" && -n "$PASSWORD" ]]; then
upaa="$USERNAME|$PASSWORD"
if [[ "$pass" == *"$upaa"* ]]; then
return 0
else
echo "用户名或密码错误"
fi
else
echo "用户名和密码不能为空"
fi
done
exit 1
}
Check
fi
服务器端密码文件格式:
cat password.cfg
# 用户名|密码
abc|123
aaa|321
ccc|111
使用说明:
把这个脚本文件,写好放在任意目录例如(/opt/option/a.sh),然后在需要验证的服务启动脚本文件的第一行添加: source /opt/option/a.sh 然后执行你的脚本时候就会发现设置成功了。
这个脚本呢,他第一行是判断如果启动脚本后面跟的参数,是none,那就不用去执行后面的内容,也就是不用执行密码校验了,这个可以根据需求修改。
如果你还没有安装那个GUI页面,可以执行下面的命令安装
sudo apt install zenity
好的,已经一个简单的脚本分享完毕,拜拜。