Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

 

0x00 将IP列表放到txt文件内

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

 

0x01 使用Shell脚本实现

创建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()

注意:请不要直接粘贴复制,如果使用以上shell请在linux主机的vim中自己手动编写,不然会出现换行符报错!

# syntax error near unexpected token `do!

 

添加脚本权限

[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

 

0x02 使用Python脚本实现

创建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

 

参考

posted @ 2018-11-28 14:38  时光飞逝,逝者如斯  阅读(646)  评论(0编辑  收藏  举报