有时候,我们需要在linux上ping一些地址,判断地址是否被占用

一、编写shell脚本

脚本如下:

#!/bin/bash
for i in 192.168.16.{1..255}      
do
    (
        ping $i -c 2 > /dev/null 2>&1
        [ $? -eq 0 ] && echo "$i is alive" 
    )&
done

效果如下

image.png

二、使用fping

fping需要单独安装,它能ping一组地址, -g指定一组地址,比如

  
fping -g 192.168.16.1 192.168.16.200


表示这两个地址之间所有的地址。


-a选项表明打印出alive的主机
qingsong@db2a:/tmp$ fping -a -g 192.168.16.0/24 2> /dev/null
192.168.16.1
192.168.16.2
192.168.16.128
192.168.16.129

-u选项打印出unreachable的主机
qingsong@db2a:/tmp$ fping -u -g 192.168.16.0/24 2> /dev/null
192.168.16.3
192.168.16.4
192.168.16.5
...<略>...
192.168.16.254

效果如下:

image.png

三、使用nmap

nmap -sP 192.168.99.0/24

效果如下:

image.png

四、使用zabbix的自动发现

因为ping主机可能不准,因为有终端服务器上防火墙禁ping,zabbix上可以配置自动发现规则,可以通过ping,ssh发现主机的状态,从而判断主机地址

是否被占用

image.png

效果如下:

image.png