我有一个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
}