shell脚本和python脚本实现批量ping IP测试
先建一个存放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