shell小实验详解3——for循环实现在线主机的IP检测

   日期:2020-08-29     浏览:114    评论:0    
核心提示:**问:**项目上线前,为了不让上线的服务器IP地址与线网上的IP地址产生冲突,需要扫描服务器IP所在网段的IP,得出在线IP与不在线的IP地址,并存入文件中,假设检测网段为192.168.100.0/24。分析:1.使用ping命令检测是否在线。2.使用for循环得出所有ip3.通过条件语句判断ping命令的结果存入相应文档代码:#!/bin/bashW=192.168.100. //定义变量for ((i=1; i<=254; i++))

**问:**项目上线前,为了不让上线的服务器IP地址与线网上的IP地址产生冲突,需要扫描服务器IP所在网段的IP,得出在线IP与不在线的IP地址,并存入文件中,假设检测网段为192.168.100.0/24。

分析:
1.使用ping命令检测是否在线。
2.使用for循环得出所有ip
3.通过条件语句判断ping命令的结果存入相应文档

代码:

#!/bin/bash
W="192.168.100." 													//定义变量
for ((i=1; i<=254; i++))											//循环1-254
do
  IP="$W$i"															//变量赋予得出完整IP
  ping -c 3 -i 0.2 -W 3 $IP &> /dev/null							//ping命令
  if [ $? -eq 0 ];then												//判断上条命令是否成功
  echo "host $IP is up" && echo "host $IP is up" >> /root/ipup.txt	//能ping通即在线
  else
  echo "host $IP is down" && echo "host $IP is down" >> /root/ipdown.txt//否则不在线
  fi
done

小技巧:

ping [选项][主机名或IP地址]

选项 用法
-c 数据包个数
-i 发送间隔
-W 等待时间

由于ping命令不加任何参数时,除非手动中断,否则它会一直piing下去,所以在做连续测试的时候,要添加合适的ping选项参数。

预定义变量
在使用条件语句时,判断条件为&?是否等于0,在这样用到了预定义变量这个知识点

名称 用法
$# 命令行中位置变量的个数
$* 所有位置变量的内容
$? 上一条命令执行后返回的状态,当返回状态为0时,表示执行正常,非0值表示执行异常或错误
$0 当前执行的进程/程序名
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服