我正在使用python上的os模块,即可以访问控制台的功能,我正在尝试创建一种Wi-Fi网络登录工具。这都是在Mac上完成的,我正在使用networksetup -setairportnetwork en0 "SSID" password
。我想知道,当密码错误时,如果有一种方法让python响应那个,有点像尝试......除了...语句。
这是当前的代码:
import os
ssid = input("Please enter the network SSID \n")
password = input("Please enter the network password \n")
print ("Connecting to...")
print ("SSID: " + ssid)
print ("Password: " + password)
os.system("networksetup -setairportnetwork en0 \"" + ssid + "\" " + password)
答案 0 :(得分:1)
这应该有效。更改异常以捕获引发的异常。
import os
success = False
while not success:
ssid = input("Please enter the network SSID \n")
password = input("Please enter the network password \n")
print ("Connecting to...")
print ("SSID: " + ssid)
print ("Password: " + password)
try:
os.system("networksetup -setairportnetwork en0 \"" + ssid + "\" " + password)
success = True
except Exception as e:
print("verification failed")
print("Exception: {}".format(e))
答案 1 :(得分:0)
似乎networksetup
执行not behave well,即使出现错误也会返回0。这意味着您必须解析程序的输出。
import subprocess
import sys
def networksetup(ssid, password):
cmd = 'networksetup -setairportnetwork en0 "{}" {}'.format(ssid, password)
output = subprocess.check_output(cmd.split(), stderr=subprocess.STDOUT)
return output
def main():
ssid = input("Please enter the network SSID \n")
password = input("Please enter the network password \n")
print ("Connecting to...")
print ("SSID: " + ssid)
print ("Password: " + password)
output = networksetup(ssid, password)
if 'Error: -3900' in output:
print("Password error: {}".format(output))
sys.exit(1) # remove this if you don't want to exit on error
if __name__ = "__main__":
main()