求大神,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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯