先建一个存放ip列表的txt文件:

  1. [root@yysslopenvpn01 ~]# cat hostip.txt
  2. 192.168.130.1
  3. 192.168.130.2
  4. 192.168.130.3
  5. 192.168.130.4
  6. 192.168.130.5
  7. 192.168.130.6
  8. 192.168.130.7
  9. 192.168.130.8
  10. 192.168.130.9
  11. 192.168.130.10
  12. 192.168.130.11
  13. 192.168.130.12
  14. 192.168.130.13
  15. 192.168.130.14
  16. 192.168.130.15
  17. 192.168.130.16
  18. 192.168.130.17
  19. 192.168.130.18
  20. 192.168.130.19
  21. 192.168.130.20

创建shell 脚本

  1. [root@yysslopenvpn01 ~]# vim shell_ping.sh
  2.  
  3. #!/bin/sh
  4.  
  5. for i in `cat hostip.txt`
  6. do
  7. ping -c 4 $i|grep -q 'ttl=' && echo "$i ok" || echo "$i failed"
  8. done
  9. exit()

添加脚本权限

  1. [root@yysslopenvpn01 ~]# chmod +x shell_ping.sh 

执行:

  1. [root@yysslopenvpn01 ~]# sh shell_ping.sh
  2. 192.168.130.1 ok
  3. 192.168.130.2 failed
  4. 192.168.130.3 failed
  5. 192.168.130.4 failed
  6. 192.168.130.5 failed
  7. 192.168.130.6 failed
  8. 192.168.130.7 failed
  9. 192.168.130.8 failed
  10. 192.168.130.9 failed
  11. 192.168.130.10 failed
  12. 192.168.130.11 failed
  13. 192.168.130.12 failed
  14. 192.168.130.13 failed
  15. 192.168.130.14 failed
  16. 192.168.130.15 failed
  17. 192.168.130.16 failed
  18. 192.168.130.17 failed
  19. 192.168.130.18 ok
  20. 192.168.130.19 ok
  21. 192.168.130.20 ok

创建python脚本:

  1. [root@yysslopenvpn01 ~]# vim ping.py
  2.  
  3. #!/usr/bin/env python
  4. # -*- coding: utf-8 -*-
  5. # Author:xieshengsen
  6.  
  7. # 实现批量ping IP测试
  8.  
  9. import re
  10. import subprocess
  11.  
  12. def check_alive(ip,count=4,timeout=1):
  13. cmd = 'ping -c %d -w %d %s'%(count,timeout,ip)
  14. p = subprocess.Popen(cmd,
  15. stdin=subprocess.PIPE,
  16. stdout=subprocess.PIPE,
  17. stderr=subprocess.PIPE,
  18. shell=True
  19. )
  20.  
  21. result=p.stdout.read()
  22. regex=re.findall('100% packet loss',result)
  23. if len(regex)==0:
  24. print "\033[32m%s UP\033[0m" %(ip)
  25. else:
  26. print "\033[31m%s DOWN\033[0m" %(ip)
  27.  
  28. if __name__ == "__main__":
  29. with file('hostip.txt','r') as f:
  30. for line in f.readlines():
  31. ip = line.strip()
  32. check_alive(ip)

执行结果:

  1. [root@yysslopenvpn01 ~]# python ping.py
  2. 192.168.130.1 UP
  3. 192.168.130.2 DOWN
  4. 192.168.130.3 DOWN
  5. 192.168.130.4 DOWN
  6. 192.168.130.5 DOWN
  7. 192.168.130.6 DOWN
  8. 192.168.130.7 DOWN
  9. 192.168.130.8 DOWN
  10. 192.168.130.9 DOWN
  11. 192.168.130.10 DOWN
  12. 192.168.130.11 DOWN
  13. 192.168.130.12 DOWN
  14. 192.168.130.13 DOWN
  15. 192.168.130.14 DOWN
  16. 192.168.130.15 DOWN
  17. 192.168.130.16 DOWN
  18. 192.168.130.17 DOWN
  19. 192.168.130.18 UP
  20. 192.168.130.19 UP
  21. 192.168.130.20 UP

  

shell脚本和python脚本实现批量ping IP测试的更多相关文章

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

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  2. 批量Ping IP

    刚刚接触Python 想做点什么 听说Python 在网络方便很厉害 后来总结如下: 第一:发现公司都固定IP 每次新来同事都要猜一个没有人用的IP  很费劲 第二:我们公司有的IP可以上QQ 有的不 ...

  3. python实现本地批量ping多个IP

    本文主要利用python的相关模块进行批量ping ,测试IP连通性. 下面看具体代码(python3): #!/usr/bin/env python#-*-coding:utf-8-*- impor ...

  4. shell 编写脚本批量Ping IP

    服务器总是一下子买了很多的段的ip.通过绑定后,也不知道这些ip是否绑定成功,所以就写了一个shell脚本,把ip输好,批量ping一下,看是不是都能ping通. 脚本如下: 此外.还有一个ip文件, ...

  5. 【原】Gradle调用shell脚本和python脚本并传参

    最近由于项目自动化构建的需要,研究了下gradle调用脚本并传参的用法,在此作个总结. Pre build.gradle中定义了$jenkinsJobName $jenkinsBuild两个Jenki ...

  6. 批量ping IP并检测IP延迟率和丢包率脚本

    脚本文件如下: #!/bin/bash #Author:Mr.Ding #Created Time:2018-08-26 07:23:44 #Name:ping.sh #Description: sh ...

  7. python实现批量ping IP,并将结果写入

    最近工作需要,写了一个Python小脚本,分享给大家,因为公司的IP用的差不多了,然后离职人员的IP有没有及时删除,导致没多少IP用了,所以做了一个python脚本跑了跑,清出来一堆ping不通的IP ...

  8. shell脚本调用python脚本的路径问题

    脚本的相互调用中,只有在同一级目录下才可以使用__file__参数去获取路径名,(在shell里使用pwd也同样),否则,使用的就是主文件(最开始运行的脚本程序)的所在位置,是错误路径:一定要注意当期 ...

  9. 有米实习-用到的shell脚本和Python脚本记录

    Shell:LOG_DATE=`date -d "1 day ago" +%Y-%m-%d` #以指定格式设置一天前的年份月份日期 aws s3 ls $LAST5_BASE_PA ...

随机推荐

  1. TCP路由网络通信

    路由器 实现跨网段通信   路由器的工作原理是基于路由器中的路由表来实现数据包的路径选择 当路由器收到一个数据包的时候,会读取数据包的目标IP地址,根据目标IP地址来匹配路由表中的规则 单个路由器不会 ...

  2. Linux命令实例功能笔记

    ls命令 ls对文件mtime时间进行排序 降序: ls -lt |  grep '^-'    升序:   ls -ltr  |  grep '^-' seq命令 求1000以内所有偶数的和 ech ...

  3. Redis入门到高可用(三)——通用命令

    通用命令  参考 http://redisdoc.com/index.html 1. keys  #查看所有key 时间复杂度:O(N), N 为数据库中 key 的数量. 127.0.0.1:637 ...

  4. git bash字体设置

    Git工具安装完毕之后,快速启动栏目显示有Git Bash.Git CMD和Git GUI.其中,Git Bash是跟Linux命令一样的,输入命令形式的.但是,有时输入命令显示的字体太小,需要对其进 ...

  5. js篇-json字符串与json对象相互转化

    回调返回结果是 json字符串还是json对象一定要看清楚哦,状态不好的时候,感觉眼神也不好使了, var a = "{"name":"jenny", ...

  6. Cell complex单元复合形

    概念 (1)Piecewise linear complex (PLC) 分段线性复合形 (2)Cell complex 单元复合形 [1] (元胞复合形) (3)Linear Cell Comple ...

  7. 实现并发join的方法

    import threadingimport time def music(): print("begin to listen %s" %time.ctime()) time.sl ...

  8. IOP知识点(2)

    1   URL资源访问不足时,需要添加URL权限 2   重定向问题解决办法:3  cloud-service-factory 项目 gradlew方法 1   URL资源访问不足时,需要添加URL权 ...

  9. 【Redis】事务

    在Redis中,事务是以multi/exec/discard进行的, 其中multi表示事务的开始, exec表示事务的执行,discard表示丢弃事务. > multi # 事务的开始 OK ...

  10. MySQL数据类型--与MySQL零距离接触2-8查看数据表

    SHOW COLUMNS FROM tb_name 写入列之后,需要写入行,也就是记录:INSERT 插入记录:INSERT [INTO]  tbl_name  [(col_name,...)]  V ...