需求假设问题的解决
我在博客Shell脚本编程(一)中提出了一个需求假设:
测试一下公司内当前子网内有多少主机可以连通(ping通),并记录下ping通PC的ip地址。
经过前面十二篇博客的学习,大家应该对Shell编程语言的变量、运算符、控制语句和函数有一定的掌握,那么我们就应该具有解决这个问题的能力。
解决问题流程:
1. 查看自己计算机的IP地址:ifconfig
我的计算机IP是192.168.1.132,因为我们公司所有PC都连在同一个路由器上,所以我们公司的PC在网段192.168.1.1到192.168.1.254之间,所以我的PC需要查看能ping通这个网段之内哪些计算机。
2. 经过上述分析,如果编写一个Shell脚本,需要在脚本程序中定义一个变量用来表示网段192.168.1.1到192.168.1.254之间某一个IP地址,又因为这是个循环查找,所以需要用到循环语句for 或者while。ping时需要查看结果,所以需要用到 $?。因为需要记录下ping通PC的ip地址,所以需要建立一个文件来存放结果。
示例程序如下:
#!/bin/bash
I=0
touch result.txt
while [ $I -lt 255 ]
do
I=`expr$I + 1`
echo"ping host: 192.168.1.$I"
ping-c 1 192.168.1.$I
if[ $? -eq 0 ]
then
echo"host:192.168.1.$I can be connected"
echo"192.168.1.$I" >> result.txt
else
echo"host:192.168.1.$I can't be connected"
fi
done
注:如果你的公司内不止一个网段,在程序中再增加一个循环语句即可。