目录
最近几天学习了redis及shell脚本开发,突然想到写一个shell脚本模拟linux远程登录
前期准备
在redis中创建用户信息
设置用户账号及密码
hset account passwd value
这里设置了三个用户
编写shell脚本
相关代码:
login.sh
#!/bin/bash
##### 输入账号
read -p "please enter your accout:" account
##### 验证账号是否存在
### 检查redis是否已启动: 用ss命令获取进程状态用grep过滤redis再用管道判断进程数量是否为2
if [ `ss -tunlp|grep redis | wc -l` -eq 2 ]
then
### 启动python程序连接redis验证账号
python3 ~/shell_learn/check_account.py $account
### 如果用户存在
if [ "$?" -eq "1" ]
then
times=5
while (($times>0))
do
read -s -p "please enter your password:" password
echo ""
#check_passwd
python3 ~/shell_learn/check_passwd.py $account $password
if [ "$?" -ne "1" ]
then
((times--))
echo "The password is incorrect, you can also enter $times times"
#read -p "please enter correct password:" password
else
echo "successful login"
exit 0
fi
done
echo "please try tomorrow"
exit 1
else
echo "your account is not exist"
exit 0
fi
fi
check_account.py
import redis
import sys
account = sys.argv[1]
red = redis.Redis(host='127.0.0.1',port=6379,db=0)
#### 连接redis获取账户
#byte = red.get("account")
### 由于取过来的值是比特类型,还要做转换处理,这里转换为字符串类型
#string = byte.decode() ##默认采用utf-8
#if account == string:
# sys.exit(1)
#else:
# sys.exit(0)
### 优化程序(后来改用hash存储)
if red.exists(account):
sys.exit(1)
else:
sys.exit(0)
check_passwd.py
import redis
import sys
## 连接redis
red = redis.Redis(host='127.0.0.1',port=6379,db=0)
#### 获取用户输入的密码
password = sys.argv[2]
account = sys.argv[1]
### 将密码与redis储存的账户及密码进行匹配
#byte = red.get("passwd")
passwd = red.hget(account,"passwd")
### 转换为字符串类型
passwd = passwd.decode()
if password == passwd:
sys.exit(1)
else:
sys.exit(0)
测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114961.html