在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发送和接收邮件
Sep 27 Python
python Flask 装饰器顺序问题解决
Aug 08 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
python3.x 生成3维随机数组实例
Nov 28 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
Feb 26 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
Python join()函数原理及使用方法
Nov 14 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
python 下载文件的几种方式分享
Apr 07 Python
Python实现8种常用抽样方法
Jun 27 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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代码优化的53个细节
2014/03/03 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
8种用Python实现线性回归的方法对比详解
2019/07/10 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
HTMl5的存储方式sessionStorage和localStorage详解
2014/03/18 HTML / CSS
瑞士男士时尚网上商店:Babista
2020/05/14 全球购物
EJB的基本架构
2016/09/22 面试题
ajax是什么及其工作原理
2012/02/08 面试题
幼儿园教师备课制度
2014/01/12 职场文书
初中军训感想300字
2014/03/05 职场文书
歌唱比赛主持词
2014/03/18 职场文书
买房委托公证书
2014/04/08 职场文书
实习评语大全
2014/04/26 职场文书
先进基层党组织材料
2014/12/25 职场文书
学校中秋节活动总结
2015/03/23 职场文书
战友聚会致辞
2015/07/28 职场文书
老乡会致辞
2015/07/28 职场文书
java版 简单三子棋游戏
2022/05/04 Java/Android