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

How do I restart wlan0 with the static ip instead of a dynamic ip?

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

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

这是我的 /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 完成了我 need.So 的所有工作,新脚本是

    #!/bin/bash

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

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

我环顾四周,看来您可以确保在 ifconfig wlan0 up 之后在您的 wifi 脚本中设置它(我还必须在每个 raspberry 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 是答案,阅读下面的评论。