先看效果:
[root@mail tmp]# ./runplayload.sh iplist.txt -s 192.168.33.34-40
No such ip【192.168.33.35】 in 【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mail tmp]# ./runplayload.sh iplist.txt -s 192.168.33.34-192.168.33.40
No such ip【192.168.33.35】 in 【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mail tmp]#
看一下iplist.txt文本格式
[root@mail tmp]# cat iplist.txt
192.168.33.34
192.168.33.36-192.168.33.40
192.168.33.200
192.168.33.204-210
192.168.33.231
脚本正圆慎文:
#!/bin/bash
#------------------------------------------
# Copyritht (C), 2015 gamjem@126.com
# 脚本名: 皮咐
# 脚本位置:
# 脚本用途:
# 脚本修改历史:
# < 作者 > <日期> <版本> <描述>
# 老耿 2015/07/13 1.0 创建
#版权: GPL
#-------------------------------------------
. /root/.bash_profile
#定义ip个数
r=6
#传参 判断
echo $3|grep -q "[0-9]-[0-9]"; stat=$? #这里在逻辑上应该先判断存不存在$3
if [ $# -ne 3 -o "$2" != "-s" -o ${stat} -ne 0 ]; then
if [ $stat -ne 0 ];then
echo "脚本使用说明:
COMMAND 文件名 -s ip范围
例:sh ./run_playload.sh iplist.txt -s 192.168.33.20-50
或 sh ./run_playload.sh iplist.txt -s 192.168.33.20-192.168.33.50"
exit
fi
fi
if [ ! -f $1 ];then
echo "文件【$1】不存在!"
exit
fi
#iplist.txt 文件格式转换
iplist=`cat $1|awk -F'[-.]' '{ if($0~/-/){sub(/-.*$/,"",$4);for (i=$4;i<=$NF;i++){print $1"."$2"."$3"."i}} else print $0} '`
#xx.xx.xx ipv4前三个字节
ip1="`echo $3|sed -r 's/.[0-9]+-.*$//'`"
#起始ip 最后一个字节
ip2="`echo $3|awk -F'.' '{sub(/-.*$/,"",$4);print $4}'`"
#结束ip 最后一个字节
ip3="`echo $3|awk -F'[-.]' '{print $NF}'`"
#如果起始ip 大于 结束ip,则两个互换
if (( $ip2>$ip3 )) ;then
ip_tmp=$ip2
ip2=$ip3
ip3=$ip_tmp
fi
#合并完整的ip,存在ip()里
ip=()
for i in `seq ${ip2} ${ip3}`
do
ipp="${ip1}.${i}"
echo "${iplist}"|grep -wq "${ipp}"
if [ $? -ne 0 ] ; then
echo "No such ip【${ipp}】 in 【$1】"
else
ip=(${ip[*]} ${ipp})
fi
done
#判断ip()不为空的情况
if [ -n "${ip[*]}" ];then
#定义ip个数
#r=6
#判断ip取值个数,分两种情况处理
if (( ${r} <= ${#ip[@]} )); then
for i in `seq ${r}`
do
let j=$i-1
echo "${i}--${ip[j]}"
done
else
for ((i=0;i<${#ip[@]};i++))
do
let j=$i+1
echo "${j}--${ip[i]}"
done
燃腔纯 echo "WARNING: 受范围限制,未能取到完整的${r}个ip!"
fi
fi