私はPythonスクリプトを使って、既知のWifiに自動的に接続します。 私は次のライブラリhttps://wifi.readthedocs.io/en/latest/を使用していますが、これはうまくいくようです。Python:wifi subprocess.CalledProcessError:コマンド '['/sbin/ifdown '、' wlp4s0 ']'がゼロ以外の終了ステータス1を返しました
Traceback (most recent call last):
File "wifi_connection.py", line 100, in <module>
print Connect('dotbot', 'pass')
File "wifi_connection.py", line 64, in Connect
savedcell.activate()
File "/home/pietro/.local/lib/python2.7/site-packages/wifi/scheme.py", line 172, in activate
subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)
File "/usr/lib/python2.7/subprocess.py", line 574, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['/sbin/ifdown', 'wlp4s0']' returned non-zero exit status 1
私は本当に理解していない。唯一の問題は、tryがscheme.activate()コマンドで選択した無線LANに接続するために、とき、それは次のエラーを返すことです。
スクリプトの名前はwifi_connection.pyで、コードは以下の通りである
wlp4s0がWiFiインターフェース、「dotbot」の名前と「パス」は、それぞれの名前でありさimport wifi
def Search():
wifilist = []
cells = wifi.Cell.all('wlp4s0')
for cell in cells:
wifilist.append(cell)
return wifilist
def FindFromSearchList(ssid):
wifilist = Search()
for cell in wifilist:
if cell.ssid == ssid:
return cell
return False
def FindFromSavedList(ssid):
cell = wifi.Scheme.find('wlp4s0', ssid)
if cell:
return cell
return False
def Add(cell, password=None):
if not cell:
return False
scheme = wifi.Scheme.for_cell('wlp4s0', cell.ssid, cell, password)
scheme.save()
return scheme
def Delete(ssid):
if not ssid:
return False
cell = FindFromSavedList(ssid)
if cell:
cell.delete()
return True
return False
def Connect(ssid, password):
cell = FindFromSearchList(ssid)
if cell:
savedcell = FindFromSavedList(cell.ssid)
# Already Saved from Setting
if savedcell:
savedcell.activate()
return cell
# First time to connect
else:
if cell.encrypted:
if password:
scheme = Add(cell, password)
try:
scheme.activate()
# Wrong Password
except wifi.exceptions.ConnectionError:
Delete(ssid)
return False
return cell
else:
return False
else:
scheme = Add(cell)
try:
scheme.activate()
except wifi.exceptions.ConnectionError:
Delete(ssid)
return False
return cell
return False
print " "
print Search()
print " "
print Connect('dotbot', 'pass')
print " "
wifiとそのパスワード。
ご協力いただきありがとうございます。
奇妙なことは、私は、コマンド "ifconfigコマンド" を実行したときに、私が得ることです:
wlp4s0 Link encap:Ethernet IndirizzoHW e0:06:e6:f8:53:29
indirizzo inet:192.168.0.116 Bcast:192.168.0.255
Maschera:255.255.255.0
indirizzo inet6: fe80::525e:7c8d:6f43:9d98/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:222347 errors:0 dropped:0 overruns:0 frame:96541
TX packets:147762 errors:0 dropped:0 overruns:0 carrier:0
collisioni:0 txqueuelen:1000
Byte RX:208449235 (208.4 MB) Byte TX:17616899 (17.6 MB)
Interrupt:19
が、私は "/ sbinに/ ifdownをwlp4s0" しようとすると、その後、私が手:
Unknown interface wlp4s0
'/ sbin/ifdown wlp4s0'を手で実行するとどうなりますか?それが動作しない場合、私たちはpythonスクリプトが間違っていないことを知っています。 'sudo'のように、' root'ユーザとして実行する必要があるかもしれません。 –
あなたの質問に答えて投稿を編集しました。 ps。私がsudoを使ってpythonスクリプトを実行すると、同じエラーが出る –