学习
实践
活动
工具
TVP
写文章

Shell——不生产知识,只做知识的搬运工!

请听题!

写一个脚本,测试从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 !

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180714G18N6P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券