我在 hyper-v 上运行着一台运行 Ubuntu 20.04 LTS 的虚拟机,它连接到两个网卡,一个是外部网卡(eth0),一个是内部网卡(eth1),因为我将通过多个网络(主要是家庭和大学)进行连接,我希望虚拟机在 sturtup 运行一个脚本来检查 eth0 上是否有网络连接,如果没有,则禁用 eth1,否则禁用 eth0
这是我写的脚本
#!/bin/bash
ifconfig eth0 up
ifconfig eth1 up
r=0
for i in {1..10}
do
ping -c 1 192.168.1.1 > /dev/null
if [ $? -eq 0 ];
then
r=1
break
fi
done
if [ $r -eq 1 ];
then
echo "eth0 is up"
echo "disabling internal network"
ifconfig eth1 down
else
echo "eth0 is down"
echo "disabling external network"
ifconfig eth0 down
fi
它能工作,但似乎没有达到我想要的效果。
事实上,如果我运行 ping 到 192.168.1.1,它会得到响应,但脚本会禁用 eth0。
该脚本设置为在启动时使用此 systemd 单元运行
[Unit]
After=network.service
[Service]
ExecStart=/usr/local/bin/network-check.sh
[Install]
WantedBy=default.target
EDIT1更新脚本