我实际上想发布以下内容作为这个问题的答案:启动期间 ifup eth0 超时。但我不确定这是否是正确的方法,或者这是一种把事情搞砸的方式。
我们实际上可以通过运行命令来检查网络电缆是否连接到机器,
grep "" /sys/class/net/eth0/carrier
当插入网线时,输出将是1对于上述命令,当未插入时,输出将为0对于上述命令。我在我的系统中测试了上述部分,它按预期工作正常。
现在的问题在于如何将这个条件包含在启动。我们可以将其包含在网络中启动文件,它可以在启动接口之前检查此情况。在 RHEL 框中,该文件/etc/sysconfig/network-scripts/ifcfg-eth0
用于启动网络接口。
所以,如果我将文件更改为如下所示,
cable=$(grep "" /sys/class/net/eth0/carrier)
if $cable -eq 1 then
#rest of the /etc/sysconfig/network-scripts/ifcfg-eth0 as it is.
else
break
然而,在提出这种方法之前,甚至在我的机器上尝试之前,我的问题是:当服务启动时,它们会/sys/class/net/eth0/carrier
准备好并可用吗?假设这种方法有效,如果我决定使用无线网络会有问题吗?
答案1
不幸的是,接口必须启动才能使上述建议的方法起作用。我按照问题中的建议对文件进行了更改,最终收到错误为“无效的论点“。所以,我相信接口应该可以查询有线连接是否可用。我还找到了有关此答案的更多有用信息:如何检测网线/连接器的物理连接状态?。
cat /sys/class/net/ethX
是迄今为止最简单的方法。但接口必须处于启动状态,否则您将收到无效参数错误。
首先:
ifconfig ethX up
然后:
cat /sys/class/net/ethX