如何从debian系统上的python脚本正确重启网络?

时间:2014-02-03 21:18:58

标签: python networking debian

我正在运行一个使用不同wifi网络的小型debian(版本7.1)框,并作为我通过相机发送给它的图像的中继。现在有时它会失去与网络的连接,如果发生这种情况,我想重新启动它的网络功能,只是为了让它真正正确连接。

在我早期的Linux时代,我学会了/etc/init.d/networking restart。但显然这不适用于WPASupplicant。所以现在我正在尝试使用“wpa_action wlan0 restart;”,但这仍然不起作用。它似乎可以从命令行工作,但在python中使用os.system("wpa_action wlan0 restart;")后,该框不会回到WIFI网络。

所以我的问题是: 重启所有网络活动的正确方法是什么?我如何从我的python脚本中做到这一点?

当我重新启动盒子时,它应该做所有事情,只是没有触及所有非网络相关的东西。

我的WPA请求者配置:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=0

network={
    id_str="home"
    ssid="xxx"
    scan_ssid=1
    psk="xxx"
    priority=5
}

network={
        ssid="sender"
        scan_ssid=1
        psk="xxx"
        priority=9
}

我的网络接口:

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
   wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface home inet dhcp
iface default inet dhcp

1 个答案:

答案 0 :(得分:0)

我能够使用以下内容重新启动我的覆盆子pi的wifi:

import subprocess
subprocess.call(['sudo /sbin/ifdown wlan0 && sleep 10 && sudo /sbin/ifup --force wlan0'], shell=True)