【发布时间】:2021-01-17 14:16:55
【问题描述】:
我正在尝试执行以下代码,在文本文件中搜索 mac 地址,如果找到它会询问用户是否要根据找到的 IP 和密码调用 API 来检索设备信息。此外,它还为用户提供了开始新搜索或退出的选项。
如果搜索匹配,这部分会完美运行。搜索不匹配时的问题! 它在第一次试验中正确执行“未找到匹配项!”,然后再次执行该函数,但如果用户再次输入一个没有匹配项的 mac 地址,则代码不会再次重新执行并结束程序。
下面是代码
import http.client
from base64 import b64encode
import ssl
import json
def search_mac():
with open(r"C:\Users\afahmy\Desktop\final.txt", "r") as output_file:
search = input("Enter mac-address: ")
search = search.lower().replace(':', '')
for line in output_file:
ip = line.split(',')[0]
# print(ip)
password = line.split(',')[1]
# print(password)
mac = line.split(',')[2].rstrip()
# print(mac)
if search == mac:
print(format("IP:" + ip + "\n" + "password:" + password))
if input("Do you want to retrieve device information?[y/n]") == 'y':
ssl._create_default_https_context = ssl._create_unverified_context
auth_string = "Polycom:"
admin_password = auth_string + password
conn = http.client.HTTPSConnection(ip)
userandpass = b64encode(admin_password.encode('UTF-8')).decode('ascii')
headers = {'Authorization': 'Basic %s' % userandpass}
conn.request("GET", "/api/v1/mgmt/device/info", headers=headers)
res = conn.getresponse()
data = res.read()
json_format = json.loads(data)
dictionary = json_format["data"]
dictionary_new = {k: dictionary[k] for k in dictionary.keys() - {'IPV6Address', 'DeviceType', 'DeviceVendor', 'AttachedHardware'}}
for item in dictionary_new.items():
print(item)
if input("Do you want to make another search?[y/n]:") == 'y':
search_mac()
else:
print("Thank you!")
exit()
search_mac()
print("No Match!")
if input("Do you really want to make another search?[y/n]:") == 'y':
search_mac()
else:
print("Thank you for your time!")
这是我第一次输入不正确的mac地址(效果很好)和第二次(这是问题)时的输出。
Enter mac-address: 64167f185bf30000 <<<< i added 4 zeros to be a wrong one
No Match!
Do you really want to make another search?[y/n]:y
Enter mac-address: 64167f185bf3 <<<< entered a correct one
IP:10.10.10.4
password:Password!
Do you want to retrieve device information?[y/n]n
Do you want to make another search?[y/n]:y
Enter mac-address: 64167f185bf300 <<<< again a mac address that does not have a match
Process finished with exit code 0
【问题讨论】:
标签: python function for-loop if-statement