Python:wifi subprocess.CalledProcessError:Command';[';/sbin/ifdown';';wlp4s0';]';返回非零退出状态1
我正在编写一个python脚本来自动连接到已知的Wifi。 我正在使用下面的库,它似乎工作得很好。唯一的问题是,当尝试通过scheme.activate()命令连接到选定的Wifi时,它返回以下错误:Python:wifi subprocess.CalledProcessError:Command';[';/sbin/ifdown';';wlp4s0';]';返回非零退出状态1,python,wifi,Python,Wifi,我正在编写一个python脚本来自动连接到已知的Wifi。 我正在使用下面的库,它似乎工作得很好。唯一的问题是,当尝试通过scheme.activate()命令连接到选定的Wifi时,它返回以下错误: Traceback (most recent call last): File "wifi_connection.py", line 100, in <module> print Connect('dotbot', 'pass') File "wifi_conn
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
其中wlp4s0是wifi接口的名称,“dotbot”和“pass”分别是wifi的名称及其密码
提前感谢您的帮助
奇怪的是,当我运行命令“ifconfig”时,我得到:
但如果我尝试“/sbin/ifdown wlp4s0”,那么我会得到:
Unknown interface wlp4s0
确保在中配置了您的接口 /etc/网络/接口 我的配置,例如:
auto wlp7s0
iface wlp7s0 inet loopback
除非我弄错了,否则我发现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)
目前我自己还在做第二部分的工作
祝你好运 如果手动运行
/sbin/ifdown wlp4s0
,会发生什么情况?如果它不起作用,那么我们就知道python脚本没有错。它可能需要以root
用户的身份运行,例如通过sudo
我编辑了这篇文章来回答您的问题。如果我使用sudo来运行python脚本,我会得到同样的错误
subprocess.check_output(['/sbin/ifdown', self.interface], stderr=subprocess.STDOUT)
subprocess.check_output(['/sbin/ifconfig', self.interface,'down'], stderr=subprocess.STDOUT)