连接网络后运行脚本

时间:2015-10-12 16:34:07

标签: linux networking initialization

将文件放在/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

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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

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