Linux 实用小脚本系列(3)--检测出网段内哪些主机在线,并记录在线IP到文本内
#!/bin/bash
#author zsk_john
>online_ip.txt
for i in {10..255}#要扫描的网段,我这里是192.168.0.10到192.168.0.255
do
{
ip=192.168.0.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip " >> online_ip.txt
fi
}&
done
wait
echo "扫描完毕!!!"
一定要注意,&是必须的,后台执行速度会比前台速度快很多的哦。
实际上,这个脚本的作用是任意网段的扫描,比如220.181.38.x
#!/bin/bash
>online_ip.txt
for i in {10..255}
do
{
ip=220.181.38.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip " >> online_ip.txt
fi
}&
done
wait
echo "扫描完毕!!!"
[root@centos8 ~]# cat online_ip.txt
220.180.38.11
220.180.38.10
220.180.38.16
220.180.38.12
220.180.38.17
220.180.38.13
220.180.38.19
220.180.38.21
220.180.38.25
220.180.38.22
220.180.38.15
220.180.38.42
220.180.38.20
220.180.38.27
220.180.38.35
........
以上的IP都是在使用的IP哦。其实,嗅探工具,比如nmap也就是这个原理实现的哦。
这个脚本可以扩展一下哦,也就是我们自己指定扫描哪个网段,执行脚本时带参数,参数为网段即可。
#!/bin/bash
>online_ip.txt
for i in {1..255}
do
{
ip=$1.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip " >> online_ip.txt
fi
}&
done
wait
echo "扫描完毕!!!"
例如:bash 脚本名称 114.114.114,执行完毕后,查看online_ip.txt文件,应该就可以看到哪些IP是可用的了。