如何使用静态IP而不是动态ip重新启动wlan0?

时间:2015-12-21 21:33:00

标签: linux bash network-programming raspberry-pi raspbian

我有一个运行Raspbian Wheezy的Raspberry Pi。 /etc/network/interfaces设置为在启动时为Pi提供静态IP。但是,当连接断开时,Pi不会自动重新建立连接。我有一个重启wlan0的脚本。但是,Raspberry Pi具有与提供给它的静态IP不同的IP地址。这打破了我从网络外部访问Pi所做的端口转发。

看起来我的界面设置得不是很正确。可以从网络中的两个IP地址访问Pi,一个是我定义的静态地址,另一个不是。当wlan0重新启动时,动态ip地址被赋予Pi,但不是静态地址。

这是我的/etc/network/interfaces

     auto lo
     iface lo inet loopback

     auto eth0
     allow-hotplug eth0
     iface eth0 inet manual

     auto wlan0
     allow-hotplug wlan0
     iface wlan0 inet static
     address 192.168.1.11
     netmask 255.255.255.0
     gateway 192.168.1.1
     wpa-ssid "ROUTER NAME"
     wpa-psk "PASSWORD"

     auto wlan1
     allow-hotplug wlan1
     iface wlan1 inet manual
     wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

以下是我用来重置wlan0:

的脚本
     #!/bin/bash

     SERVER=192.168.1.1 #Ping the router

     ping -c2 ${SERVER} > /dev/null

     #If the exits status from the ping is not 0 (failed)
     if [$? != 0]
     then
         #Disable wlan0 and re-enable it
         sleep 2
         ifconfig wlan0 down 
         sleep 2
         ifconfig wlan0 up
     fi

任何帮助表示赞赏!谢谢!

编辑: 在浏览了这个帖子中的想法之后,我发现/etc/init.d/networking restart做了我需要的一切。所以新脚本是

    #!/bin/bash

    SERVER=192.168.1.1
    ping -c2 ${SERVER} > /dev/null

    if [ $?!=0 ]
    then
        /etc/init.d/networking restart
        echo "Reconnecting!"
    fi

1 个答案:

答案 0 :(得分:0)

我环顾四周,似乎你可以确保在ifconfig wlan0 up之后在你的wifi脚本中设置它(我还必须在每个覆盆子pi设置上实现这样的脚本我已经由于wifi不一致而造成的)

if [$? != 0]
     then
         #Disable wlan0 and re-enable it
         sleep 2
         ifconfig wlan0 down 
         sleep 2
         ifconfig wlan0 up
         ifconfig wlan0 192.168.1.11
     fi

虽然应该注意我个人从未在pi上设置静态IP,但我使用反向隧道服务,所以我永远不必担心端口转发。我的回答引用了raspberrypi stackexchange站点的这个答案。 https://raspberrypi.stackexchange.com/questions/9678/static-ip-failing-for-wlan0

如果这有帮助,请告诉我,否则我可以深入研究它。

根据提问者的反馈,/etc/init.d/networking restart就是答案,请阅读以下评论。