通过脚本为两个具有不同静态IP地址的地方设置网络

通过脚本为两个具有不同静态IP地址的地方设置网络

我有一台 Raspberry Pi 2,我想在家里和工作中使用它。在家里它可以获取 DHCP 地址或静态地址 192.168.2.x,但在工作中它必须获取静态 IP 地址 10.10.34.122。

我知道如何通过编辑手动分配静态 IP 地址/etc/network/interfaces,但是一旦我这样做,如果我在另一个网络中,我就无法再访问该设备,因此它需要自动检测。

我的想法是创建两个文件(/etc/network/home.if/etc/network/work.if)并根据需要复制它们。我将从 192 地址开始并尝试 ping 我的 DSL 路由器。如果它响应,它应该使用home.if,如果没有,则使用work.if

到目前为止我认为这个脚本应该可以实现我的愿望:

#!/bin/bash
# Start with my home setting
cp /etc/network/home.if /etc/network/interfaces
sudo /etc/init.d/networking restart

# If I can ping my router, I'm at home
ping=$(ping 192.168.2.1 -c 1)
#echo $ping
if [[ "$ping" =~ "1 received" ]]; then
        echo "home"
        cp /etc/network/home.if /etc/network/interfaces
else
        echo "work"
        cp /etc/network/work.if /etc/network/interfaces
fi

# Apply the detected settings
sudo /etc/init.d/networking restart

我需要把这个脚本放在哪里以便它在启动过程中在正确的位置执行?

答案1

您可以从文件 /etc/rc.local 调用它。您可以将这些行添加到该文件中,也可以在那里调用脚本。无论您选择什么,您都必须将其添加到“exit 0”行上方。

顺便说一句:我建议您在第一次网络重启后添加一个等待命令,因为网络启动可能需要几秒钟。如果 ping 来得太早,您可能会得到错误的结果。

相关内容