免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1111 | 回复: 1

绑定IP脚本,实现IP期限管理。 [复制链接]

论坛徽章:
0
发表于 2006-10-25 10:12 |显示全部楼层
建立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

论坛徽章:
0
发表于 2006-10-25 13:01 |显示全部楼层
8错~~~支持一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP