先建一個存放ip列表的txt檔案:
[root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.130.2 192.168.130.3 192.168.130.4 192.168.130.5 192.168.130.6 192.168.130.7 192.168.130.8 192.168.130.9 192.168.130.10 192.168.130.11 192.168.130.12 192.168.130.13 192.168.130.14 192.168.130.15 192.168.130.16 192.168.130.17 192.168.130.18 192.168.130.19 192.168.130.20
建立shell 指令碼
[root@yysslopenvpn01 ~]# vim shell_ping.sh #!/bin/sh for i in `cat hostip.txt` do ping -c 4 $i|grep -q 'ttl=' && echo "$i ok" || echo "$i failed" done exit()
新增指令碼許可權
[root@yysslopenvpn01 ~]# chmod +x shell_ping.sh
執行:
[root@yysslopenvpn01 ~]# sh shell_ping.sh 192.168.130.1 ok 192.168.130.2 failed 192.168.130.3 failed 192.168.130.4 failed 192.168.130.5 failed 192.168.130.6 failed 192.168.130.7 failed 192.168.130.8 failed 192.168.130.9 failed 192.168.130.10 failed 192.168.130.11 failed 192.168.130.12 failed 192.168.130.13 failed 192.168.130.14 failed 192.168.130.15 failed 192.168.130.16 failed 192.168.130.17 failed 192.168.130.18 ok 192.168.130.19 ok 192.168.130.20 ok
建立python指令碼:
[root@yysslopenvpn01 ~]# vim ping.py #!/usr/bin/env python # -*- coding: utf-8 -*- # Author:xieshengsen # 實現批量ping IP測試 import re import subprocess def check_alive(ip,count=4,timeout=1): cmd = 'ping -c %d -w %d %s'%(count,timeout,ip) p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) result=p.stdout.read() regex=re.findall('100% packet loss',result) if len(regex)==0: print "\033[32m%s UP\033[0m" %(ip) else: print "\033[31m%s DOWN\033[0m" %(ip) if __name__ == "__main__": with file('hostip.txt','r') as f: for line in f.readlines(): ip = line.strip() check_alive(ip)
執行結果:
[root@yysslopenvpn01 ~]# python ping.py 192.168.130.1 UP 192.168.130.2 DOWN 192.168.130.3 DOWN 192.168.130.4 DOWN 192.168.130.5 DOWN 192.168.130.6 DOWN 192.168.130.7 DOWN 192.168.130.8 DOWN 192.168.130.9 DOWN 192.168.130.10 DOWN 192.168.130.11 DOWN 192.168.130.12 DOWN 192.168.130.13 DOWN 192.168.130.14 DOWN 192.168.130.15 DOWN 192.168.130.16 DOWN 192.168.130.17 DOWN 192.168.130.18 UP 192.168.130.19 UP 192.168.130.20 UP