gpt4 book ai didi

Python: wifi subprocess.CalledProcessError: Command '['/sbin/ifdown', 'wlp4s0' ]' 返回非零退出状态 1

转载 作者:行者123 更新时间:2023-11-28 18:22:22 25 4
gpt4 key购买 nike

我正在编写一个自动连接到已知 Wifi 的 python 脚本。我正在使用以下库 https://wifi.readthedocs.io/en/latest/这似乎工作得很好。唯一的问题是,当尝试通过 scheme.activate() 命令连接到选定的 Wifi 时,它会返回以下错误:

    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

我真的不明白。

脚本名为wifi_connection.py,代码如下:

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 " "

其中 wlp4s0 是 wifi 接口(interface)的名称,“dotbot”和“pass”分别是 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

最佳答案

除非我弄错了,否则我发现 ifdown/ifup 似乎不再使用了。我已经在我自己的项目中修复了您的第一个错误,但我似乎无法修复第二部分。

ifdown wlan0 已更改为 ifconfig wlan0 down和 ifup 到 ifconfig wlan0 up

因此,在此处更改来自此 wifi 包的 scheme.py 脚本:

    subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)

将其更改为:

    subprocess.check_output(['/sbin/ifconfig', self.interface,'down'], stderr=subprocess.STDOUT)

我目前仍在研究第二部分。

祝你好运!

关于Python: wifi subprocess.CalledProcessError: Command '['/sbin/ifdown', 'wlp4s0' ]' 返回非零退出状态 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44154053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com