#!/usr/bin/env python3.8 import getpass import pymysql import hashlib import uuid import re import time import pyinputplus as pyip import os from uuid import getnode as mac t = 4 print("-------------------------") print("<<<<<<<<<Welcome>>>>>>>>>") print("-------------------------") print("Please enter a username (after 3 unlucky attempts system will reboot)") while True: t -= 1 if t > 0: username = pyip.inputNum('Username (must be 12 numbers): ', min=111111111111, max=999999999999, limit=3) db = pymysql.connect("hostname","user","pass","db") # prepare a cursor object using cursor() method cursor = db.cursor() cursor.execute("SELECT userID, password from permissions") data = cursor.fetchone() dbuser, dbpass = data #dbuser, dbpass = str(data[0]), data[1] # disconnect from server db.close() if username == dbuser : while True: password = getpass.getpass(prompt="Enter secret password:") if (hashlib.sha1(password.encode()).hexdigest() == dbpass): print("Authentication success") break else: print("Bad password") t -= 1 if t > 0: print('Left attempts=>', t) else: print('System will reboot now...') time.sleep(3) # os.system("reboot") break else: print ("please try another username. This username is incorrect") continue break
не срабатывает лимит limit=3 на ввод username и скрипт просто подвисает после 3-х неудачных ввода username:
# ./auth.py ------------------------- <<<<<<<<<Welcome>>>>>>>>> ------------------------- Please enter a username (after 3 unlucky attempts system will reboot) Username (must be 12 numbers): 659605758502 please try another username. This username is incorrect Username (must be 12 numbers): 659605758503 please try another username. This username is incorrect Username (must be 12 numbers): 659605758505 please try another username. This username is incorrect