永发信息网

求大神,SHELL怎么获取ip地址

答案:2  悬赏:50  手机版
解决时间 2021-02-27 02:09
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-02-26 13:38
执行shell脚本,怎么获取.sh文件所在服务器的IP地址并写到aa.txt文件中
最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-02-26 14:20
ip a s > aa.txt当然这个结果有点多, 如果你只是要ip地址的话, 还要对结果进一步处理.
全部回答
  • 1楼网友:往事埋风中
  • 2021-02-26 15:26
先看效果: [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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯