利用shell模拟linux远程登陆

导读:本篇文章讲解 利用shell模拟linux远程登陆,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1前期准备

2编写shell脚本

3测试


最近几天学习了redis及shell脚本开发,突然想到写一个shell脚本模拟linux远程登录

前期准备

在redis中创建用户信息

设置用户账号及密码

hset account passwd value

这里设置了三个用户

利用shell模拟linux远程登陆 

编写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)

测试

利用shell模拟linux远程登陆

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/114961.html

(0)
Java光头强的头像Java光头强

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!