ifplugd 实现网口检测
ifplugd检测eth0拔插消息
为了检测固定网线口的拔插消息,在busybox里配置了ifplugd
ptions:
-n Don't daemonize
-s Don't log to syslog
-i IFACE Interface
-f/-F Treat link detection error as link down/link up
(otherwise exit on error)
-a Don't up interface at each link probe
-M Monitor creation/destruction of interface
(otherwise it must exist)
-r PROG Script to run
-x ARG Extra argument for script
-I Don't exit on nonzero exit code from script
-p Don't run script on daemon startup
-q Don't run script on daemon quit
-l Run script on startup even if no cable is detected
-t SECS Poll time in seconds
-u SECS Delay before running script after link up
-d SECS Delay after link down
-m MODE API mode (mii, priv, ethtool, wlan, iff, auto)
-k Kill running daemon
系统起来后运行 ifplugd -nI -i eth0 -r /etc/network/if.sh会在当前shell启动ifplugd并检测网口状态
去掉 -n 以守护进程运行
ifplugd -nI -i eth0 -r /etc/network/if.sh
ifplugd(eth0): started: BusyBox v1.16.1 (2011-01-28 11:42:48 HKT)
ifplugd(eth0): using SIOCETHTOOL detection mode
ifplugd(eth0): link is up
ifplugd(eth0): executing '/etc/network/if.sh eth0 up'
ifplugd(eth0): exit code: 0
GMAC:eth0: Link is down
ifplugd(eth0): link is down
ifplugd(eth0): executing '/etc/network/if.sh eth0 down'
ifplugd(eth0): exit code: 0
GMAC:eth0 : Link is Up
ifplugd(eth0): link is up
ifplugd(eth0): executing '/etc/network/if.sh eth0 up'
ifplugd(eth0): exit code: 0
基于上面的资料我做了个简单的网口检测程序
从上面的红色字体可以看出当ifplugd指令执行的时候会调用后面的指定的脚本,并且向脚本中传递参数
在文件系统中装上ifplugd后,启动ifplugd作为守护进程在后台执行,同时指定网口改变时执行的脚本文件,当网口和断开分别执行不同的程序,
脚本:
#!/bin/sh
echo "if1.sh"
echo $#
echo $0
echo $1
echo $2
if [ $# -eq 2 ];then
if [ $1 = "eth0" ];then
echo -n "ech0 "
fi
if [ $2 = "up" ];then
echo "up"
exec /etc/network/net_up
elif [ $2 = "down" ];then
echo "down"
exec /etc/network/net_down
elif [ $2 = "disable" ];then
echo "disable"
elif [ $2 = "error" ];then
echo "error"
fi
fi
————————————————
版权声明:本文为CSDN博主「wangxueang224」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangxueang224/article/details/8171733