server ogr 比对 any zuoye join 当前时间 gin use
- blog addr: http://www.cnblogs.com/uyahs/p/7667783.html
- program summary:
- 该程序运行在python3.X环境中
- 该程序共两个文件,需要放在同一目录下。
- 主程序为zuoye_login.py
- zuoye_login.txt 为存储账号信息的文件,如需增加账号密码格式如下:
- user:password;0
- 程序运行后会先进行账号密码的输入,输入后程序会从密码文本中进行查找和比对信息,如果正确则显示成功信息
- 如果失败则对该账号记录1次错误登陆,超过三次错误登陆,则锁定该账号100秒。
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # Author:Xtian
- ‘‘‘
- 这是一个登陆模块,账号密码保存在同目录下zuoye_login.txt文件下
- zoye_login.txt文件格式如:root;server;0 分别是账号,密码,登陆失败次数,三个值之间用分号分隔
- 运行此程序后,如果密码错误则会对该账号记录一次错误,超过三次则锁定该账号100秒。
- ‘‘‘
- import getpass
- import time
- login_status = 0 #这个值为登陆状态,如果等于1表示登陆验证成功
- while True:
- f = open(‘zuoye_login.txt‘,‘r+‘)
- text = f.read().split(‘\n‘)
- f.close()
- guess_user = input("user:")
- guess_passwd = getpass.getpass("password:")
- for j in range(len(text)):
- if guess_user == text[j].split(‘;‘)[0]:
- if int(text[j].split(‘;‘)[2]) > 2: #如果该账号密码登陆错误次数超过2
- localtime = time.localtime(time.time())
- now_time = int(time.mktime(localtime)) #获取现在的时间戳
- unit_time = int(now_time)-int(text[j].split(‘;‘)[3]) #计算出当前时间和记录时间差
- if unit_time > 100: #将时间差与100比较,超过100则可以继续
- text[j] = "%s;%s;0" % (text[j].split(‘;‘)[0],text[j].split(‘;‘)[1]) #将失败次数重置为0
- new_text = ‘\n‘.join(text)
- f = open(‘zuoye_login.txt‘, ‘w‘)
- f.writelines(new_text)
- f.close()
- else: #时间差不足100秒,按照登陆失败重新循环
- wait_time = 100 - unit_time #当前还需要等待的时间(秒)
- print("There are too many errors,please wait for %s second" % (wait_time))
- input("please input ‘ENTER‘ to try again")
- break
- if guess_passwd == text[j].split(‘;‘)[1]: #判断密码是否正确
- login_status = 1 #将登陆状态更改为1,表示登陆成功
- break
- else:
- if text[j].split(‘;‘)[2]: #判断zuoye_login.txt文件中这个账号中的失败次数不为空时进行
- failed_count = int(text[j].split(‘;‘)[2]) #获取该账号失败次数
- failed_count += 1 #将该账号失败次数+1
- localtime = time.localtime(time.time())
- failed_login_time = int(time.mktime(localtime)) #获取登陆失败时的时间戳,并存入文件
- text[j] = "%s;%s;%s;%d" % (text[j].split(‘;‘)[0],text[j].split(‘;‘)[1],failed_count,failed_login_time)
- new_text = ‘\n‘.join(text)
- f = open(‘zuoye_login.txt‘,‘w‘)
- f.writelines(new_text)
- f.close()
- else: #如果zuoye_login.txt文件中此账号的失败次数为空则添加一个失败次数的值
- text[j] = "%s;%s;%s;%s" % (text[j].split(‘;‘)[0],text[j].split(‘;‘)[1],failed_count,failed_login_time)
- new_text = ‘\n‘.join(text)
- f = open(‘zuoye_login.txt‘, ‘w‘)
- f.writelines(new_text)
- f.close()
- else:
- continue
- if login_status == 1: #判断是否登陆成功
- print("login success !")
- print("welcome ", guess_user)
- break
- else:
- print("login failed !")
python基础学习登陆作业
来源: http://www.bubuko.com/infodetail-2351884.html