查找哪些包控制网络接口?

查找哪些包控制网络接口?

我有一个在启动时运行的 debian 软件包。

我正在使用 upstart,我想我需要添加依赖项到新贵配置:

start on someProgram

我不确定哪个程序,但我没有使用network-manager,它已被禁用。我正在做这样的事情:

ethernet=$(ifconfig -a | grep Ethernet | grep ^e | cut -d' ' -f1)
wifi=$(ifconfig -a | grep wl | cut -d' ' -f1)
ping -I $ethernet -c 1 8.8.8.8 \
  || ping -I $wifi -c 1 8.8.8.8 \
  || echo "not online"

问题是ifconfig并不总是显示$wifi界面,因为程序在启动过程中启动得太早。

ping -I $ethernet -c 1 8.8.8.8该成功的时候也失败了。

如果我sleep 30这样做的话ping,效果很好。

有谁知道我应该等待什么软件包才能使其按预期工作?

我在嵌入式设备上使用 Ubuntu 14.04。

3.0.36+ #16 SMP PREEMPT Tue Oct 31 19:17:57 EDT 2017 armv7l armv7l armv7l GNU/Linux

我以为我已经有了答案:

我发现可以直接引用网络接口而不是包:

start on (local-filesystems and net-device-up IFACE!=lo)

我仍然想针对我的情况稍微改进一下。

因为我宁愿等待 wlan 而不是 eth,但我不确定是否可以使用通配符,例如:IFACE=wlan*

但似乎这并没有等待接口可用,ifconfig而是等待该接口具有活动的互联网连接。

答案1

我最终找到了使用新贵预启动脚本的解决方法:

pre-start script
    while [ -z "$(ifconfig | grep wlan)" ]
    do
        sleep 1
    done
    sleep 5
end script

相关内容