在 upstart 中是否有一种方法可以对事件进行编码,以便在特定机器的网络连接可用时启动该事件?在我的情况下,基于 ping 结果的某些操作会起作用。如果网络中断,正在启动的任务将崩溃,因此 respawn 可以轻松启动它,但如果启动时网络连接不可用,它将挂起,upstart 将无法捕获它(如果这有助于突出用例,它是一个从本地 ffserver 流式传输到另一个 ffserver 的 ffmpeg 实例)。
答案1
如果你知道机器的 IP 地址,你可以通过以下方式确认 MAC 地址来确认它是否是“正确”的机器:
arp -an 192.168.1.123
您可能需要先 ping 它,以便 arp 可以找到它。
这是我正在使用的执行相同操作的脚本:
#!/bin/bash
ip=192.168.1.123
mac=00:aa:bb:cc:dd:ee
if ping -c 1 -t 1 ${ip} > /dev/null && arp -an ${ip} | grep ${mac}; then
echo "${ip} has the expected mac addy."
# Mount my nfs share (requires sudo, but whatever)
mount -t nfs -o proto=tcp,port=2049 ${ip}:/ /mnt
else
echo "This isn't the network I'm looking for."
fi