Linux下批量ping某個網段ip的腳本


 

比如現在需要對172.16.50.0/24網段的ip進行檢查,檢查哪些ip現在被占用,哪些ip沒有被占用,可以通過ping命令來檢查,腳本如下:

[root@uatdns01 opt]# vim /opt/ping.sh 
#!/bin/bash
. /etc/init.d/functions
for var in {1..254};
do
ip=172.16.50.$var
ping -c2 $ip >/dev/null 2>&1
if [ $? = 0 ];then
action "$ip" /bin/true
else
action "$ip" /bin/false
fi
done

[root@uatdns01 opt]# chmod 755 /opt/ping.sh
[root@uatdns01 opt]# sh /opt/ping.sh
172.16.50.1                                                [  OK  ]
172.16.50.2                                                [FAILED]
172.16.50.3                                                [FAILED]
172.16.50.4                                                [FAILED]
172.16.50.5                                                [FAILED]
.........
.........
172.16.50.99                                             [  OK  ]
172.16.50.100                                            [  OK  ]
172.16.50.101                                            [  OK  ]
172.16.50.102                                            [  OK  ]
172.16.50.103                                            [  OK  ]
172.16.50.104                                            [  OK  ]
172.16.50.105                                            [  OK  ]
172.16.50.106                                            [  OK  ]
172.16.50.107                                            [  OK  ]
172.16.50.108                                            [  OK  ]
172.16.50.109                                            [  OK  ]
172.16.50.110                                            [  OK  ]
172.16.50.111                                            [FAILED]
172.16.50.112                                            [  OK  ]

                                                                                                                                                                         

獲取172.16.60.0/24網段可用ip的shell腳本
[root@ansible-server ~]# cat ip_ping.sh 
#!/bin/bash 
ip=1 
while [ $ip != "254" ]; do 
ping 172.16.60.$ip -c 2 | grep -q "ttl=" && echo "172.16.60.$ip yes" || echo "172.16.60.$ip no" 
ip=`expr "$ip" "+" "1"` 
done 

執行:
[root@ansible-server ~]# sh ip_ping.sh
172.16.60.1 yes
172.16.60.2 no
172.16.60.3 no
.............
172.16.60.24 yes
172.16.60.25 yes
172.16.60.26 no
.............

如果只打印可用ip, 則腳本修改如下:
[root@ansible-server ~]# cat ip_ping.sh
#!/bin/bash 
ip=1 
while [ $ip != "254" ]; do 
ping 172.16.60.$ip -c 2 | grep -q "ttl=" && echo "172.16.60.$ip yes" || echo "172.16.60.$ip no" >/dev/null 2>&1
ip=`expr "$ip" "+" "1"` 
done 

執行:
[root@ansible-server ~]# sh ip_ping.sh
172.16.60.1 yes
172.16.60.21 yes
172.16.60.22 yes
172.16.60.23 yes
172.16.60.24 yes
172.16.60.25 yes
172.16.60.31 yes
172.16.60.32 yes
172.16.60.33 yes
172.16.60.34 yes
172.16.60.35 yes
172.16.60.36 yes
172.16.60.37 yes
172.16.60.38 yes
172.16.60.39 yes


獲取172.16.50.0/24, 172.16.51.0/24, 172.16.60.0/24 三個網段的可用ip
[root@ansible-server ~]# cat ip_ping.sh
#!/bin/bash 
ip=1 
while [ $ip != "254" ]; do 

ping 172.16.50.$ip -c 2 | grep -q "ttl=" && echo "172.16.50.$ip yes" || echo "172.16.50.$ip no" >/dev/null 2>&1
ip=`expr "$ip" "+" "1"` 

ping 172.16.51.$ip -c 2 | grep -q "ttl=" && echo "172.16.51.$ip yes" || echo "172.16.51.$ip no" >/dev/null 2>&1
ip=`expr "$ip" "+" "1"` 

ping 172.16.60.$ip -c 2 | grep -q "ttl=" && echo "172.16.60.$ip yes" || echo "172.16.60.$ip no" >/dev/null 2>&1
ip=`expr "$ip" "+" "1"` 

done 

執行:
[root@ansible-server ~]# sh ip_ping.sh
172.16.50.1 yes
172.16.51.11 yes
172.16.50.16 yes
172.16.50.19 yes
172.16.51.20 yes
172.16.60.21 yes
172.16.50.22 yes
172.16.60.24 yes
172.16.50.25 yes
172.16.50.31 yes
172.16.60.33 yes
172.16.51.35 yes
172.16.60.36 yes
172.16.60.39 yes
172.16.51.41 yes
172.16.51.44 yes
172.16.50.52 yes
172.16.51.53 yes
172.16.50.55 yes
172.16.50.58 yes
172.16.51.65 yes
..................


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM