作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的最终目标是创建一个在启动时运行的脚本,该脚本在插入以太网电缆时关闭 wifi,反之亦然。这是我到目前为止创建的脚本:
#!/bin/bash
File=/sys/class/net/eth0/carrier
function toggle {
if grep -q 1 "$File"; then
echo "Yes"
else
echo "No"
fi
}
toggle # Once on startup
while inotifywait -q $File; do
toggle
done
我已经确认插入和拔出以太网电缆确实会改变 /sys/class/net/eth0/carrier
,但由于某种原因,更新时绝对没有任何反应。我通过将 File 更改为我的主目录中名为“test.txt”的临时文件来测试该命令是否完全检测到更改。每当我访问该文件、更改其内容等时,脚本都会按预期继续。我尝试通过执行 echo '1' > test.txt
来覆盖文件,这很有效。删除文件导致错误和脚本终止,但至少它注册了一个响应。
我可以将脚本设置为每秒执行一次,但我想尽可能避免这种情况。
最佳答案
根据 this和 this , inotify
可能不适用于 /sys
文件。
另一种方法是使用 ip monitor
并检查 state UP
或 state DOWN
字符串:
ip monitor link dev eth0 | awk '/state DOWN/{print "No"} /state UP/{print "Yes"}'
关于linux - 如何在 Raspberry Pi 上有效监控以太网何时插入/拔出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815315/
我是一名优秀的程序员,十分优秀!