学习python的第一天-模拟用户登录接口,输入错误三次锁定

编写一个模拟登录接口

1、输入用户名密码
2、认证成功后显示欢迎信息
3、连续输入三次后锁定,下次登录时提示用户锁定

效果如下:

[root@VM_145_137_centos day1]python user.py 
Please enter username:admin
Please enter password:123
Please Try enter passwd(1).
Please enter password:123
Please Try enter passwd(2).
Please enter password:admin
Welcome to Linux OS.
[root@VM_145_137_centos day1]
[root@VM_145_137_centos day1]
[root@VM_145_137_centos day1]python user.py 
Please enter username:jia
Please enter password:jia
Please Try enter passwd(1).
Please enter password:jia
Please Try enter passwd(2).
Please enter password:jia
Please Try enter passwd(3).
username or passwd erroruser jia is lock.
[root@VM_145_137_centos day1]python user.py 
Please enter username:jia
Please enter password:jia
user jia is lock.
[root@VM_145_137_centos day1]

个人实现思想:

根据ssh办法,用户输入用户名后,让用户输入三次密码(如果每次都输入用户名和密码,判断三次比较难),当三次密码都输入错误时,将用户信息写入一个文本中,并退出程序。下次用户登陆时,输入用户名和密码后,首先查看文本中是否有该用户的记录,如果有,则直接提示用户已被锁定。

实现代码:

#!/usr/bin/env python
import os
i = 0
# 提示用户输入用户名,并去除输入前后的空格符
username = raw_input("Please enter username:").strip()
# 输入密码时进入一个循环,循环三次
for i in range(1,4):
    passwd = raw_input("Please enter password:")
# 判断输入的用户名是否被记录,如果被记录,则提示被锁定。os.system里面返回的值为0 或1 ,如果正确执行,为0
    lock = os.system("grep %s /root/username 1>/dev/null 2>&1" %(username))
    if lock == 0:
        print "user %s is lock." %(username)
    break
# 判断用户名和密码是否正确,如果只判断用户名,则可能会被试探用户名信息,有安全隐患
    if username == 'admin':
        if passwd == 'admin':
            print "Welcome to Linux OS."
        break
        else:
            print "Please Try enter passwd(%s)." % (i)
    else:
        print "Please Try enter passwd(%s)." % (i)
    i = i + 1
# 超过3次,则提示锁定
    if i == 4:
        print "username or passwd error. user %s is lock." % (username)
        os.system('echo %s >> /root/username' % username)


猜你喜欢

转载自blog.51cto.com/xiaowangzai/2390720