请听题!
写一个脚本,测试从192.168.0.50到192.168.0.200之间有多少 IP能连接通,将无法连接的IP记录到另一个文件err.log中。
然后,我一脸~~~~~~~~
孙子兵法云:知己知彼,百战不殆,不知几不知彼,必败。
那么我们先看看IP能连接通时会出现什么情况。
先ping一下自己的IP看看。
当然没有比较就不能发现区别,我们在ping一个无法接通的IP来看看。
总之ping不通与ping通之间是有差异的,找到差异问题就解决了一半了。
差异是什么?
ping通的话会有time=0.06ms等时间显示,而拼失败时只有100%丢包和消耗总时间time 14629ms 的提示。
那么我们就可以用是否出现 “time=”标识来判断IP是否接通,一个条件判断语句就能完成目标。
怎么遍历192.168.0.50到192.168.0.200?
192.168.0.50
192.168.0.200
IP只有后两位是每次加1递增的,只需将其分成两个字符串来处理问题就解决了。
#! /bin/bash
baseip="192.168.0"
#将IP固定不变的部分设定成一个字符串
for((i=50;i
# for循环遍历50到200实现
do
result=`ping$.$ -c 3`
#将ping的结果赋值给result
count=`echo$ | grep "time=" | wc -l`
#统计ping成功次数
if [ $ -eq 0 ]
then
echo $$ >> err.log
fi
done
注意:
1.符号
result=`ping$.$ -c 3` 命令用 “·” (反引号/飘)括起来。
-c 3 代表ping三次。
count=`echo$ | grep "time=" | wc -l`
2.管道命令 “|”
比如count=`echo$ | grep "time=" | wc -l` 命令
在echo$出的文件内查找“time=”字符串,并显示统计的行数(wc命令 -l或--lines 只 显示行数。)。统计出所有含有“time=”字符的行,并将行数返回给count
将我们的代码放入我们的虚拟机运行
运行之后
因为ping不到该区段的IP所有有command not found 提示
我们在查看err.log文件,看看是否将所有拼接不通的IP对追加到err.log文件中。
可以看到所有的ping不通的IP都已经追加到了err.log文件中。
复习几个命令
more /etc/profile 全页查看/etc/profile文件
less /etc/profile 翻页查看/etc/profile文件
head -n 5 /etc/passwd 查看/etc/profile文件的前五行
tail -n 2 /etc/passwd 查看/etc/profile文件的后两行
BYE!See You Next Time !
领取专属 10元无门槛券
私享最新 技术干货