在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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python实现的特征提取操作示例
Dec 03 Python
python内存监控工具memory_profiler和guppy的用法详解
Jul 29 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
Python如何调用JS文件中的函数
Aug 16 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
python自动下载图片的方法示例
Mar 25 Python
django美化后台django-suit的安装配置操作
Jul 12 Python
k-means & DBSCAN 总结
Apr 27 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截取中文字符串不乱码的方法
2013/12/25 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
一段实时更新的时间代码
2006/07/07 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
Asp.net下使用Jquery Ajax传送和接收DataTable的代码
2010/09/12 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
简单谈谈JS中的正则表达式
2017/09/11 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
django model通过字典更新数据实例
2020/04/01 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
傲盾软件面试题
2015/08/17 面试题
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
大学活动策划书范文
2014/01/10 职场文书
房产代理公证处委托书
2014/04/04 职场文书
挂职学习心得体会
2014/09/09 职场文书
报效祖国演讲稿
2014/09/15 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
2014年校长工作总结
2014/12/11 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书