【问题标题】:How to properly restart networking from a python script on a debian system?如何从 debian 系统上的 python 脚本正确重启网络?
【发布时间】:2014-02-03 21:18:58
【问题描述】:

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

在我早期的 Linux 时代,我学会了 /etc/init.d/networking restart。但显然这不适用于 WPASuplicant。所以现在我正在尝试使用“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

【问题讨论】:

  • 哪个版本的 Debian?我对 Ubuntu 的体验是,做这些事情的正确方法已经发生了变化,而且几乎每年都不同。
  • 这是Debian 7.1!编辑:其实它是 raspbian,但应该不会有太大的不同。
  • 是否安装了network-manager-gnomenetwork-manager-kde?它们是 wpa 请求者的前端,有时会引起头痛。如果您手动配置 wpa supplicant,最好终止这些进程,因为它们可能会导致奇怪的事情发生。
  • 两者都没有安装。我只是在这个上使用命令行。

标签: python networking debian


【解决方案1】:

要重新启动接口,您的脚本必须具有足够的权限(通常是 root)。

import subprocess
my_cmd = "sudo ifdown eth0 && sudo ifup eth0"   # might be wlan0
proc = subprocess.Popen(my_cmd, shell=True, stdout=subprocess.PIPE)

【讨论】:

    【解决方案2】:

    我能够使用以下方法让我的树莓派 wifi 重新启动:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 2013-09-07
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多