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
展开
 我来答
柔顺还温厚灬菠萝蜜2
2015-07-13 · 超过16用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:4.5万
展开全部

先看效果:

[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 广告
StormProxies是一家提供动态代理服务器服务的企业,旨在帮助用户更好地管理网络访问和安全。以下是一些关于StormProxies的IP动态代理服务的特点:1. 高匿名性:StormProxies的动态代理服务器具有高匿名性,可以有效... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式