networking连接后运行脚本

将文件放在/etc/network/if-up.d/ ,只要调出接口,就可以调用脚本。 但这并不意味着互联网连接已经build立。 这经常发生在我身上。 比如下面的代码

 #!/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 

在界面启动后立即调用脚本。 但是大多数时候,我仍然没有networking连接,所以我的脚本失败了,因为它试图连接到networking。

我究竟做错了什么?

当接口启动时,这并不意味着你有一个连接。 如果将接口配置为从DHCP获取IP,则IP配置需要几秒钟的时间。

要检查Internet连接,您可以使用nslookupdig查询已知网页的IP。 如果你得到一个有效的答案,你可以继续。 否则,请在中止之前等待并重复一定次数的重试。

现在为什么要使用DNS系统来检查Internet连接? 我认为这是检查所有网络方面配置正确(IP地址,路由,DNS等)最简单便捷的方法。