在Linux环境中,我需要检测RJ45连接器与其插槽的物理连接或断开连接状态。最好只使用BASH脚本。
以下在其他站点上提出的解决方案不适用于此目的:
/ proc文件系统中没有可用的状态(所有其他文件都在其中吗?]
Linux世界应该如何从图标托盘中弹出自己的Windows气泡版本,指示您刚刚拔下网络电缆?
Kent Fredric和lothar,您的回答都满足了我的需求……非常感谢!我会用哪一个...我还是不知道。
我想我不能把你们两个都当成正确的答案吗?我选择其中一种可能对您很公平。我猜是掷硬币吗?再次感谢!
您想查看]中的节点>
/ sys / class / net /我尝试了我的:
已插入电线:
eth0/carrier:1 eth0/operstate:unknown
已移除电线:
eth0/carrier:0 eth0/operstate:down
再次插入电线:
eth0/carrier:1 eth0/operstate:up
Side Trick:一次收获所有属性的简单方法:
grep "" eth0/*
这形成了一个不错的
key:value
对列表。
tail -f /var/log/syslog | grep -E 'link (up|down)'
/sys/class/net/(interface name here)/operstate
#you can also put watch
watch -d -n -1 /sys/class/net/(interface name here)/operstate
可以
您可以使用ethtool:
使用“ ip监视器”获取实时链接状态更改。
cat /sys/class/net/ethX
是迄今为止最简单的方法。
在低级别上,可以使用rtnetlink套接字捕获这些事件,而无需任何轮询。旁注:如果使用rtnetlink,则必须与udev一起使用,否则当udev重命名新的网络接口时,程序可能会感到困惑。