用shell脚本批量连续更改FreeBSD主机ip
2009-02-03 12:01
330 查看
年前写过一个自动投票的小程序,因为对方的网站限制为一个ip地址一天只能投10票,所以这个自动投票的程序在设计初期主要是通过代理服务器投票,后来同事提供了局域网内的30个ip地址,虽然自动投票的代码已经完成了,但是在windows下手动更改ip,真的很累人,而windows的WMI编程又不会,最后找到一台不用的FreeBSD机器,写了个脚本,并配置为每天凌晨12点后运行,效果很好。
更改ip地址的脚本名为cip_vote,可以这样调用:
./cipvote fxp0 iptable.txt
其中fxp0是网卡的名称,iptable.txt是可以更改的ip地址列表,其格式为:
210.77.79.201 255.255.255.128 210.77.79.255
210.77.79.202 255.255.255.128 210.77.79.255
...
第一列为需要更改的IP地址,第二列为子网掩码,第三列为广播(broadcast)地址。
具体的更改ip的命令,可以参考ifconfig的在线手册,这里就不赘述了,下面是源代码:
更改ip地址的脚本名为cip_vote,可以这样调用:
./cipvote fxp0 iptable.txt
其中fxp0是网卡的名称,iptable.txt是可以更改的ip地址列表,其格式为:
210.77.79.201 255.255.255.128 210.77.79.255
210.77.79.202 255.255.255.128 210.77.79.255
...
第一列为需要更改的IP地址,第二列为子网掩码,第三列为广播(broadcast)地址。
具体的更改ip的命令,可以参考ifconfig的在线手册,这里就不赘述了,下面是源代码:
#! /usr/local/bin/bash #首先获取当前的ip设置,在执行完ip的操作后会恢复为当前设置 inet_ip=`ifconfig $1 | awk '$0 ~ / *inet */ {print $2}'` inet_netmask=`ifconfig $1 | awk '$0 ~ / *inet */ {print $4}'` inet_broadcast=`ifconfig $1 | awk '$0 ~ / *inet */ {print $6}'` #读取文件的内容并将ip,netmask,broadcast的地址读入相关数组中保存 temp=`wc -l $2` declare -i i=0; declare -i LineNumber=`echo $temp | awk '{print $1}'` declare -i n; while [ "$i" != "$LineNumber" ] do n=$i+1 ip_array =`head -n $n $2 | tail -n 1 | awk '{print $1}'` netmask_array =`head -n $n $2 | tail -n 1 | awk '{print $2}'` broadcast_array =`head -n $n $2 | tail -n 1 | awk '{print $3}'` i=$i+1 done #用ifconfig命令更改ip地址,然后进行投票工作,最后恢复主机从前的ip设置 i=0; while [ "$i" != "$LineNumber" ] do n=$i+1 echo "ifconfig $1 inet ${ip_array[`echo $n`]} netmask ${netmask_array[`echo $n`]} broadcast ${broadcast_array[`echo $n`]}" ifconfig $1 inet ${ip_array[`echo $n`]} netmask ${netmask_array[`echo $n`]} broadcast ${broadcast_array[`echo $n`]} route add default 210.77.79.254 #在这里添加要执行操作的代码 i=$i+1 done #最后恢复为原来的设置 ifconfig $1 inet $inet_ip netmask $inet_netmask broadcast $inet_broadcast route add default 210.77.68.25
相关文章推荐
- shell脚本实现从master节点批量配置salve节点(主机名有瑕疵,IP映射,ssh服务)
- shell脚本批量追踪ip路由走向
- 自动扫描局域网并且发现指定端口开放的主机ip的shell脚本
- shell脚本实现批量测试局域网主机是否在线
- Linux系统shell脚本编程——生产实战案例(批量检查在线IP与开放端口)
- 使用shell脚本对IP进行批量测速(Ping)
- Shell脚本实现自动修改IP、主机名等功能分享
- shell 脚本批量检测主机存活状态
- Shell交互批量更改主机名的方法
- python脚本批量更改ESXI主机名,DNS
- shell脚本练习:判断某IP段主机在线情况
- shell脚本实现批量测试局域网主机是否在线
- [Shell] Linux主机密码批量回收 脚本
- Shell 批量更改主机名
- shell脚本批量操作linux主机:
- shell脚本批量监控Linux server配置文件的更改
- linux系统批量添加IP的shell脚本
- shell脚本批量获取内网主机的MAC地址