Linux Shell列出网络中所有的活跃主机

因为的的网段是 192.168.1.0/24 ,
所以我只需遍历 192.168.1.1 到 192.168.1.255 之间的所有ip然后进行 ping 就可以了:

test.sh:

#!/bin/bash
for ip in 192.168.1.{1..255} ;
do 
    ping $ip -c 2 &> /dev/null ;
    
    if [ $? -eq 0 ];
    then 
        echo $ip is alive
    fi
done

结果如下:

zifeiy@zifeiy-S1:~/文档$ bash test.sh 
192.168.1.1 is alive
192.168.1.3 is alive
192.168.1.4 is alive
192.168.1.6 is alive

也可以修改成并行ping的:
test.sh:

#!/bin/bash
for ip in 192.168.1.{1..255} ;
do (
        ping $ip -c 2 &> /dev/null ;
        
        if [ $? -eq 0 ];
        then 
            echo $ip is alive
        fi
    )
    done
wait

在 for 循环中执行了多个后台进程,然后结束循环并终止脚本。
wait命令hau等待所有的子进程结束后再终止脚本。

也可以使用 fpingsudo apt-get install fping),他的速度更快,用法如下:

fping -a 192.168.1/24 -g

fping -a 192.168.1.1 192.168.1.255 -g

(fping的用法暂时没有搞懂~)

猜你喜欢

转载自www.cnblogs.com/zifeiy/p/9434119.html