使用学习过的知识完成网络的 ping
#!/bin/bash
cd /root/Desktop/test_txt
if [ ! -d "ping" ];then
mkdir ping
else
echo "文件夹已经存在"
fi
cd ping
touch ping_exist.txt
touch ping_nonentity.txt
for I in $(seq 1 253)
do
# 在官方 -c<完成次数> 设置完成要求回应的次数。
# ping -c 4 www.baidu.com 请去尝试一下就知道了
# /dev/null 代表空, 类似于一个黑洞,把输出的内容丢进去,就没有了。
# 命令后面 & , 代表程序在后台运行
# > 是输出的定向符号。
ping -c 1 192.168.188.$I &> /dev/null
if [ $? -eq 0 ] #如果上一条语句正确执行了则 #? 的值就会为 0 ,即 ping 通了
then
# 将 ping 通的ip记录下来,输出重定向,以不覆盖的方式重定向到这个文件中
echo "192.168.188.$I 存在." >> ping_exist.txt
else
echo "192.168.188.$I 不存在." >> ping_nonentity.txt
fi
done
echo "执行完毕!"
运行的时候有点慢,所以如下:
[root@controller test_shell]# chmod 777 ping.sh
[root@controller test_shell]# ./ping.sh &
./文件名.sh & 中的&表示在后台运行此程序
[root@controller ping]# sed -n '$=' ping_exist.txt
37
sed -n ‘$=’ 后跟文件名,输出文件中包含的行数
我测试的网段中有 37 个被使用的 ip