在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 相关文章推荐
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
Jan 23 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
简单介绍Python中的JSON使用
Apr 28 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
python enumerate函数的使用方法总结
Nov 15 Python
深入理解Python爬虫代理池服务
Feb 28 Python
python实现windows下文件备份脚本
May 27 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
如何通过python实现全排列
Feb 11 Python
python 实现读取csv数据,分类求和 再写进 csv
May 18 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
一个程序下载的管理程序(三)
2006/10/09 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
新手简单了解vue
2019/05/29 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
Python NumPy库安装使用笔记
2015/05/18 Python
django的登录注册系统的示例代码
2018/05/14 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
用python解压分析jar包实例
2020/01/16 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
基本款天堂:Everlane
2017/05/13 全球购物
电气工程师岗位职责
2014/01/01 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
公司端午节活动方案
2014/02/04 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
大班下学期个人总结
2015/02/13 职场文书
教师党员个人自我评价
2015/03/04 职场文书
责任书范本大全
2015/05/11 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
关于做家务的心得体会
2016/01/23 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android
python缺失值填充方法示例代码
2022/12/24 Python