linux拔掉网线ip仍然在,openwrt 实现网线的拔插能够释放IP和重新分配IP地址

工作遇到一个需求就是:当拔出网线时,释放掉IP;再次插上网线时,重新分配IP地址。

这个可以分成两部分来做:

1、获取拔插网线的状态

2、释放IP和重新分配IP

一、获取网线的拔插状态:

方法一:用swconfig命令去获取网线的拔插状态

swconfig命令形式:

swconfig dev [port |vlan ] (help|set |get |load |show)

若不知道dev设备名,则先用swconfig list查看一下

例如:

root@:/# swconfig list

Found: switch0 - QCA DESS #可以看到设备名为switch0

以我的板子为例,

在终端敲下:swconfig dev switch0 port 4 get link | awk '{print $2}' | cut -d":" -f2

就可以获取网线的状态,一般为“up”或者"down",即;连接和断开

方法二:利用热拔插事件去检测网卡的拔插状态

二、释放IP

释放IP,就是删除掉IP,

一种方法是利用ifconfig命令,

另外一种是ip命令的删除方式,

还有一种是命令:dhclient -r

三、重新分配IP

这里提供几种方法去获取IP

方法1:

重启network服务

service network restart或者/etc/init.d/network restart

方法2:

单独启动和关闭某个网卡

ifconfig eth0 down #eth0是网卡名字

ifconfig eth0 up

方法3:

使用ifup命令

例如我的板子:ifup lan命令就可以更新IP

ifup lan #lan是设备名

方法4:

利用dhcp服务获取IP

命令:dhclient

方法5:

命令:udhcpc -i br-lan #br-lan是网卡名,用ifconfig可以查看网卡名

这个是单独更新指定的网卡IP,

例如你要更新的网卡是eth0,则命令是:udhcpc -i eth0

那么把上面合起来就能满足拔出网线,是否IP;插入网线,重新分配IP的功能了!

代码如下:

while true; do

status=`swconfig dev switch0 port 4 get link | awk '{print $2}' | cut -d":" -f2` #这个是获取当前网线的拔插状态,UP就是插着网线,down就是拔出网线

if [ "$status" = "up" ]; then

echo "link up" >/dev/console #连上网线时,打印出信息"link up"

udhcpc -i br-lan #插上网线,更新br-lan的IP地址

else

echo "link down" >/dev/console#拔出网线时,打印出信息"link down"

ifconfig br-lan 0.0.0.0 #拔出网线,重置br-lan的IP地址

fi

sleep 2

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值