我有一个 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
在启动序列期间,我需要将在正确位置执行的脚本放在哪里?
您可以从文件 /etc/rc.local 中调用它。您可以将行添加到该文件或在那里调用脚本。无论您选择什么,都必须将其添加到“exit 0”行上方。
顺便说一句:我建议您在第一次网络重启后添加一个等待命令,因为网络启动可能需要几秒钟。如果 ping 来得早,您可能会得到不正确的结果。