- 论坛徽章:
- 0
|
建立4个文件 /bin/arptab /bin/arpbd /bin/arp_time /bin/showarp (权限为可执行:chmod +x )
⑴/bin/arptab
#内容绑定IP后自动添加
⑵绑定管理:命令格式 arpbd <IP_地址> <此IP能使用的天数>
/bin/arpbd内容:
#!/bin/bash
start()
{
if [ "$ip_addr" = "" ];
then
echo "CU(www.chinaunix.net):lihc16888 QQ:89789165"
echo "IP NOT NULL !"
echo "usage : arpbd <IP_ADDR> <TIME>"
echo " : arpbd 192.168.1.2 30"
exit;
else
if [ "$term" = "" ];
then
echo "CU(www.chinaunix.net):lihc16888 QQ:89789165"
echo "TIME NOT NULL !"
echo "usage : arpbd <IP_ADDR> <TIME>"
echo " : arpbd 192.168.1.2 30"
exit;
else
try=`echo $term |awk '{print $1-1}'`
if [ "$try" = "-1" ];
then
echo "CU(www.chinaunix.net):lihc16888 QQ:89789165"
echo "TIME TAPE ERROR !"
echo "usage : arpbd <IP_ADDR> <TIME>"
echo " : arpbd 192.168.1.2 30"
exit;
fi
fi
fi
#解除当前IP绑定 ,若不解除则不能获取真正的MAC地址!
#通过PING建立连路!以便获得MAC地址。 提示显示在第5屏。
arp -d $ip_addr >/dev/tty5
ping -c 3 $ip_addr >/dev/tty5
mac_addr=`arp $ip_addr|awk 'BEGIN { FS = " " }{if (NR == 2) {print $3}}'`
if [ "$mac_addr" = "" ] ;
then
clear
echo " ------------------"
echo " $ip_addr"
echo " ------------------"
echo " MAC ERROR ! "
echo " ------------------"
/bin/arptab >/tmp/tty5
exit;
fi
#判断获取的MAC不能等于 你的网卡名称, 这是因为之前把网卡绑定成00:00:00:00:00:00 ,本脚本执行后才解除 用ARP命令获取MAC有可能获取的是网卡名称!
#!!!!!!!!!!!!根据实际情况修改 "eth0" ,例如你要绑定的IP在系统中用的网卡是eth1 等等 则修改成eth1。
mac_addr=`arp $ip_addr|awk 'BEGIN { FS = " " }{if (NR == 2) {print $3}}'`
if [ "$mac_addr" = "eth0" ];
then
clear
echo " ------------------"
echo " $ip_addr"
echo " ------------------"
echo " MAC ERROR ! "
echo " ------------------"
/bin/arptab >/tmp/tty5
exit;
fi
#获取网卡真实的MAC地址,及arptab中的MAC地址 如果获取的MAC地址 ,则修改arptab中的MAC地址,完成提示OK!
arpbd_date=`date "+%y%m%d"`
>/tmp/arptmp
awk -F" " '$3 != "'$ip_addr'" {print $1" "$2" "$3" "$4" "$5" "$6}' /bin/arptab >>/tmp/arptmp
echo "arp -s $ip_addr $mac_addr #$arpbd_date $term" >>/tmp/arptmp
cat /tmp/arptmp >/bin/arptab
/bin/arptab >/tmp/tty5
clear
echo " ------------------"
echo " $ip_addr"
echo " ------------------"
echo " OK! "
echo " ------------------"
exit;
}
case "$1 $2" in
*)
ip_addr="$1"
term="$2"
start
;;
esac
#end
⑶添加 系统凌晨0点自动执行/bin/arp_time任务
crontab -e
添加 0 0 * * * /bin/arp_time
⑷#有效天数自动减1, 天数为0时,把此IP绑定成"00:00:00:00:00:00"
#此命令 不要手动 执行。
/bin/arp_time
>/tmp/arptime
awk -F" " '$6 > "0" {print $1" "$2" "$3" "$4" "$5" "$6-1}' /bin/arptab >>/tmp/arptime
awk -F" " '$6 <= "0" {print $1" "$2" "$3" "$4" "$5" "$6}' /bin/arptab >>/tmp/arptime
cat /tmp/arptime >/bin/arptab
>/tmp/arptime
awk -F" " '$6 > "0" {print $1" "$2" "$3" "$4" "$5" "$6}' /bin/arptab >>/tmp/arptime
awk -F" " '$6 <= "0" {print $1" "$2" "$3" ""00:00:00:00:00:00"" "$5" ""0"}' /bin/arptab >>/tmp/arptime
cat /tmp/arptime >/bin/arptab
/bin/arptab
#end
⑸#显示某ip状态
# showarp IP地址
/bin/showarp
文件内容:
#!/bin/bash
start()
{
cat /bin/arptab |grep $ip_addr
}
case "$1" in
*)
ip_addr="$1"
start
;;
esac
#end |
|