在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 splitlines使用技巧
Sep 06 Python
Python 深入理解yield
Sep 06 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
对pandas的层次索引与取值的新方法详解
Nov 06 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
如何搭建pytorch环境的方法步骤
May 06 Python
python 爬取天气网卫星图片
Jun 07 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来处理多个提交任务
2006/10/09 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
在Windows上安装Node.js模块的方法
2011/09/25 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
CSS3 3D 技术手把手教你玩转
2016/09/02 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
关于使用axios的一些心得技巧分享
2017/07/02 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
Python列表(List)知识点总结
2019/02/18 Python
python实现大文件分割与合并
2019/07/22 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
Java 数组内置函数toArray详解
2021/06/28 Java/Android
Windows server 2012 配置Telnet以及用法详解
2022/04/28 Servers