1.发现问题
今天在学习的时候突然有一个想法,想要看一下自己教室网段内的ip占用情况,如果一个一个的IP去ping的话会花费大量时间于是自己尝试用shell脚本来解决这个问题.
需求:
我的ip是192.168.22.122,我想要查看22网段下所有的ip使用情况、是否有人在使用某些ip、是否可以ping通该网段的所有ip.
2.编程思想
-
1.基于:ping
192.168.22.xxx 来获取相应的返回情况。
- 我使用的是centos7的虚拟机桥接模式.
- 成功返回:
- 64 bytes from 192.168.22.121: icmp_seq=1 ttl=128 time=1.50 ms
- 失败返回:
-
From 192.168.22.80 icmp_seq=1 Destination Host Unreachable
如果成功的话,返回的字符串中会带有"ttl"字符串,所以可以依据这个来作为是否ping通的判断条件。 2. shell的循环
- 用For循环和while do 循环都可以,需要让变量$i 从0-255即可 3. shell的多线程
- 再结合了上面两个方法以后,发现255个ip一个一个ping还是很慢,所以就想到了多线程的方法,把1次运行ping和判断调用1个线程,一共使用255个线