編寫一個模擬登陸接口css
一、輸入用戶名密碼
二、認證成功後顯示歡迎信息
三、連續輸入三次後鎖定,下次登陸時提示用戶鎖定python
效果以下:centos
[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 error. user 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)