将文件放在/etc/network/if-up.d/
中,只要界面出现,您就可以调用脚本。但这并不意味着互联网连接已经建立。这种情况经常发生在我身上。例如,下面的代码
#!/bin/sh
# Don't bother to do anything for lo.
if [ "$IFACE" = lo ]; then
exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
exit 0
fi
# we only care about inet and inet6.
case $ADDRFAM in
inet|inet6|NetworkManager)
;;
*)
exit 0
;;
esac
/path/to/my/script
exit 0
在界面启动后立即调用脚本。但大多数情况下,我仍然没有网络连接,所以我的脚本失败了,因为它试图连接到网络。
我做错了什么?
答案 0 :(得分:1)
当界面启动时,它并不意味着你有一个连接。例如,如果接口配置为从DHCP获取IP,则IP配置需要几秒钟。
要检查互联网连接,您可以使用nslookup
或dig
查询已知网页的IP。如果您得到有效答案,您可以继续。否则,在中止之前等待并重复一定次数的重试。
现在为什么要使用DNS系统检查互联网连接?我认为这是检查所有网络方面是否正确配置(IP地址,路由,DNS等)的最简单方便的方法。