在Python中调用Ping命令,批量IP的方法


Posted in Python onJanuary 26, 2019

如下所示:

#!/usr/bin/env python
#coding:UTF-8
'''''''
 Author: jefferchen@163.com
 可在命令行直接带目的IP,也可将IP列表在文本文件中。
 pingip.py -d DestIP 
 DestIP示例: a)单个: 192.168.11.1
        b)多个: 192.168.11.1;172.16.8.1;176.13.18.2
        c)网段: 192.168.11.1-127
  文本文件:ip.txt
      目的IP多行存储
'''''''
import argparse
import os
import platform
import time,datetime

def PingCmd():
  cmdStr = ''
  if platform.system()=='Linux':
    cmdStr = 'ping -c 1 %s > /dev/null'
  else:
    cmdStr = 'ping -n 1 %s > nul'
  return cmdStr

def IPV4SegList(aList):
  IPSeg = aList[0].split('.')
  IP4Begin = int(IPSeg[3])
  IP4End  = int(aList[1])
  segList = []
  if IP4End<=IP4Begin:
    IP4End += IP4Begin
  else:
    IP4End +=1
  for ip in range(IP4Begin,IP4End):
    aIP = IPSeg[0]+'.'+IPSeg[1]+'.'+IPSeg[2]+'.'+str(ip)
    segList += [aIP]
  return segList

def ParseSeg(aSeg):
  segList = []
  aList = aSeg.split('-')
  if len(aList)==2:
    segList = IPV4SegList(aList)
  else:
    segList = aList
  return segList

def AddLineIP(IPList,aLine):
  LineList = aLine.split(';')
  for aSeg in LineList:
    segList = ParseSeg(aSeg)
    IPList += segList
  return IPList

def GetIPListFromFile(filename):
  IPList = []
  f = open(filename)
  lines = f.readlines()
  for line in lines:
    line = line.strip()
    line = line.replace('\n','')
    IPList = AddLineIP(IPList,line)
  return IPList

def NotifyAdmin(failureIP):
  print('Network error at ',failureIP)

def ReportSummary(success,failure):
  print('----DONE! Total: %s nodes. %s ---'%(success+failure,timeFmt()))

def PingList(aList):
  sucess,failure = 0,0
  failureIP = []
  print('Trying...')
  for ip in aList:
    cmdStr = PingCmd()%ip.replace('\n','')
    res = os.system(cmdStr)
    if res < 1 :
      sucess += 1
    else:
      failure += 1
      failureIP += [ip]
    time.sleep(1)
  if failure :
     NotifyAdmin(failureIP)
  else:
    ReportSummary(sucess,failure);


def timeFmt():
  return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))

def writeLog(content):
  print('[%s] %s' % (timeFmt(), content))
  file_object = open('ping.' + time.strftime('%Y-%m-%d', time.localtime(time.time())) + '.log', 'a')
  file_object.write('[%s] %s\n' % (timeFmt(), content));
  file_object.close()

if __name__ == '__main__':
  parse = argparse.ArgumentParser(description='Batch ping utility.')
  parse.add_argument('-f','--filename',default='ip.txt',help='IP file name(Default IP.txt)')
  parse.add_argument('-d','--destip',type=str,default='',help='destination IPs ');
  args = parse.parse_args()
  if args.destip!='':
    IPList = AddLineIP([],args.destip)
  else:
    if args.filename!='':
      IPFile = args.filename
    else:
      IPFile = 'ip.txt'
    IPList = GetIPListFromFile(IPFile)
  PingList(IPList)

以上这篇在Python中调用Ping命令,批量IP的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python常见排序算法基础教程
Apr 13 Python
python实现画一颗树和一片森林
Jun 25 Python
Python3爬楼梯算法示例
Mar 04 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
如何在python中写hive脚本
Nov 08 Python
python中with语句结合上下文管理器操作详解
Dec 19 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 Python
Python3 用matplotlib绘制sigmoid函数的案例
Dec 11 Python
python音频处理的示例详解
Dec 23 Python
Python 多线程之threading 模块的使用
Apr 14 Python
python ConfigParser库的使用及遇到的坑
Feb 12 Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 #Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 #Python
Python检查ping终端的方法
Jan 26 #Python
使用python Telnet远程登录执行程序的方法
Jan 26 #Python
Python判断telnet通不通的实例
Jan 26 #Python
解决python测试opencv时imread导致的错误问题
Jan 26 #Python
在Python 中实现图片加框和加字的方法
Jan 26 #Python
You might like
PHP完整的日历类(CLASS)
2006/11/27 PHP
php方法调用模式与函数调用模式简例
2011/09/20 PHP
深入PHP获取随机数字和字母的方法详解
2013/06/06 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
Javascript调用C#代码
2011/01/17 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
JS简单计算器实例
2015/01/20 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
基于jQuery Tipso插件实现消息提示框特效
2016/03/16 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
在django中图片上传的格式校验及大小方法
2019/07/28 Python
python3实现高效的端口扫描
2019/08/31 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
英国顶级珠宝品牌之家:John Greed
2018/06/09 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
施工质量承诺书范文
2014/05/30 职场文书
2014年部门工作总结
2014/11/12 职场文书
总经理致辞
2015/07/29 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS