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

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

我正在编写一个python脚本来自动连接到已知的Wifi。 我正在使用下面的库,它似乎工作得很好。唯一的问题是,当尝试通过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
其中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)