在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 相关文章推荐
python3实现ftp服务功能(服务端 For Linux)
Mar 24 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
对python中的for循环和range内置函数详解
Apr 17 Python
python学习之hook钩子的原理和使用
Oct 25 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
Dec 03 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 27 Python
python实现图片批量压缩
Apr 24 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
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php使用google地图应用实例
2014/12/31 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
2016/09/22 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
ie和firefox中img对象区别的困惑
2006/12/27 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
2014/03/13 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
微信小程序视图template模板引用的实例详解
2017/09/20 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
写演讲稿要注意的六件事
2014/01/14 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
档案室主任岗位职责
2014/02/12 职场文书
请假条范文大全
2014/04/10 职场文书
父母寄语大全
2014/04/12 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
创业计划书之书店
2019/09/10 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python