先建一個存放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