问题现象:centos系统重启网卡后ip没了,检测网卡配置文件没写错也是对的,重启网卡也没报任何错误
journalctl -r查问题,存在Error, some other host already uses address的报错
百度解决:1、修改配置文件vi /etc/sysconfig/network-scripts/ifup-eth 2、 /arping快速定位,把红框5行前面加#注释
注释保存后重启网卡,问题解决~
补充:centos7重启网卡命令:1、/etc/init.d/network restart2、systemctl restart network3、service network restart
4、systemctl restart NetworkManager
ARPING=$(/sbin/arping -c 2 -w ${ARPING_WAIT:-3} -D -I ${REALDEVICE} ${ipaddr[$idx]})
这里通过 arping 命令进行 IP 地址冲突检测:
/sbin/arping:是一个用来发送 ARP 请求的命令,通常用于检查指定 IP 地址是否已被占用。
-c 2:表示发送 2 次 ARP 请求。
-w ${ARPING_WAIT:-3}:设置超时时间为 ARPING_WAIT 变量的值,如果该变量没有定义,则默认为 3 秒。
-D:启用 ARP 请求,检测目标 IP 是否已经被其他设备占用。
-I ${REALDEVICE}:指定网卡接口,如 eth0 或其他。
${ipaddr[$idx]}:这是脚本中需要检查的 IP 地址。
这条命令会向指定的 IP 地址发送 2 次 ARP 请求,检查网络上是否已经有设备响应该地址。
if [ $? = 1 ]; then
$?:表示上一个命令的返回值。
arping 的返回值是 1 表示网络中存在响应 ARP 请求的设备,即 IP 地址冲突。
总结:如果 arping 返回 1(表示该 IP 地址已被其他设备占用),则执行后续操作。
提取 ARP 响应的 MAC 地址:
ARPINGMAC=$(echo $ARPING | sed -ne ‘s/.*\[\(.*\)\].*/\1/p’)
echo $ARPING:打印 arping 命令的输出。
sed -ne ‘s/.*\[\(.*\)\].*/\1/p’:使用 sed 命令从 arping 的输出中提取出响应的 MAC 地址。
扫码访问小程序中的本文
