Переписал скрипт, добавив функции:
#!/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
test = 0
print("-------------------------")
print("<<<<<<<<<Welcome>>>>>>>>>")
print("-------------------------")
print("Please enter a username (after 3 unlucky attempts system will reboot)")
def user():
global username
username = pyip.inputNum('Username (must be 12 numbers): ', min=111111111111, max=999999999999, limit=3)
def pazz():
global password
password = getpass.getpass(prompt="Enter secret password:")
def maria():
global data
global db
db = pymysql.connect("hostname","user","pass","db")
cursor = db.cursor()
cursor.execute("SELECT userID, password from permissions")
data = cursor.fetchone()
maria()
for i in range(3):
test += 1
user()
dbuser, dbpass = data
if username == dbuser :
pazz()
if (hashlib.sha1(password.encode()).hexdigest() == dbpass):
print(mac)
print(dbuser)
print("Authentication success")
break
else:
print("Bad password")
print(f"Left attempts=>{3-test}")
# print('System will reboot now...')
# time.sleep(3)
# os.system("reboot")
break
else:
print ("please try another username. This username is incorrect")
Теперь 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): 659605758502
please try another username. This username is incorrect
Username (must be 12 numbers): 659605758502
please try another username. This username is incorrect
Как теперь реализовать проверку 3-х попыток для пароля при правильном username? Снова при помощи while: True или по другому можно? А то сейчас только 1 попытка проверки пароля:
# ./auth.py
-------------------------
<<<<<<<<<Welcome>>>>>>>>>
-------------------------
Please enter a username (after 3 unlucky attempts system will reboot)
Username (must be 12 numbers): 659605758501
Enter secret password:
Bad password
Left attempts=>2