shell脚本,实现脚本ip地址变换,每次输出不同的ip地址。
1.脚本如下其作用是:echo"$x...“时,每次要输出不同的ip地址。#./run_payload.sh-eip_list.txt-s192.168.33.36-33...
1. 脚本如下其作用是:
echo "$x ...“时, 每次要输出不同的ip地址。
# ./run_payload.sh -e ip_list.txt -s 192.168.33.36-33.49
// run_payload.sh 文件内容如下:
-------------------------------------------------
#!/bin/sh
list="1 2 3 4 5 6 "
for x in $list;
do
now_ip=` ./get_ip.sh -e $2 -s $4`
echo "$x -- $now_ip"done
上 述脚本运行后的结果应该是:
1 -- 192.168.33.36
2 -- 192.168.33.37
3 -- 192.168.33.38
4 -- 192.168.33.39
5 -- 192.168.33.40
6 -- 192.168.33.41
2. 现要求实现get_ip.sh的功能
还有另几个要求:
(1) get_ip.sh返回的地址,要确认是否在 ip_list.txt中存在
( 2 ) get_ip.sh对 ip_list.txt中的非法ip 通知输出。ip_list.txt中的ip地址从192.168.33.36-192.168.33.183 展开
echo "$x ...“时, 每次要输出不同的ip地址。
# ./run_payload.sh -e ip_list.txt -s 192.168.33.36-33.49
// run_payload.sh 文件内容如下:
-------------------------------------------------
#!/bin/sh
list="1 2 3 4 5 6 "
for x in $list;
do
now_ip=` ./get_ip.sh -e $2 -s $4`
echo "$x -- $now_ip"done
上 述脚本运行后的结果应该是:
1 -- 192.168.33.36
2 -- 192.168.33.37
3 -- 192.168.33.38
4 -- 192.168.33.39
5 -- 192.168.33.40
6 -- 192.168.33.41
2. 现要求实现get_ip.sh的功能
还有另几个要求:
(1) get_ip.sh返回的地址,要确认是否在 ip_list.txt中存在
( 2 ) get_ip.sh对 ip_list.txt中的非法ip 通知输出。ip_list.txt中的ip地址从192.168.33.36-192.168.33.183 展开
1个回答
展开全部
先看效果:
[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
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询