如何检测在redhat 6上/etc/init.d脚本中初始化网络的时间

时间:2014-01-31 20:07:07

标签: networking redhat

我有一个init.d脚本在启动时启动我的进程,需要初始化网络。我可以使用随NetworkManager包附带的实用程序nm-online,但问题是在没有安装NW的部署中,所以我必须有一些其他可靠的选项,可以告诉我网络设置,我可以通过网络连接到其他服务器。我可以继续尝试,直到我建立联网或设置连接,但这将导致与错误报告相关的其他一些问题。

以下是其他一些人提出的类似问题。

How to detect when networking initialized in /etc/init.d script?

wait_for_network()
{
    [ -z "${LINKDELAY}" ] && LINKDELAY=10
    $INFO "Waiting for network..."
    if [ -f /usr/sbin/nm-online ]; then
        nm-online -q --timeout=$LINKDELAY || nm-online -q -x --timeout=30
    else
        check_for_network_up $LINKDELAY || check_for_network_up 30
    fi
    [ "$?" = "0" ] && success "network startup" || failure "network startup"
    echo
}   

我正在尝试其他方法,我可以检查路由表。如果网络未启动,则路由命令返回零条目,但问题是我不知道路由条目的实际数量。它可以是两台一台机器,其中10台在其他机器上。

check_for_network_up_old3() {
   let no_of_routes=`/bin/netstat -rn | wc -l`
   $INFO "netstat result $?"
   timeout=$1
   while [ "$timeout" != "0" ]; do
     let routes=`/sbin/ip route show | wc -l`
     $INFO "$routes"
     if [ $routes -gt 1 ]; then
        return 0
     fi
     timeout=$((timeout-1))
     sleep 1
     $INFO "check_for_network_up $timeout"
   done
  return 1
}

0 个答案:

没有答案