在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分割和拼接字符串
Nov 01 Python
python聊天程序实例代码分享
Nov 18 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
浅谈pytorch和Numpy的区别以及相互转换方法
Jul 26 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
pytorch之ImageFolder使用详解
Jan 06 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Django 返回json数据的实现示例
Mar 05 Python
弄清Pytorch显存的分配机制
Dec 10 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php实现的短网址算法分享
2014/06/20 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
Bootstrap每天必学之警告框插件
2016/04/26 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
JS实现碰撞检测效果
2020/03/12 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python获取本机mac地址和ip地址的方法
2015/04/29 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
基于python时间处理方法(详解)
2017/08/14 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Python数组并集交集补集代码实例
2020/02/18 Python
vue常用指令代码实例总结
2020/03/16 Python
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
园长自我鉴定
2013/10/06 职场文书
建设工程授权委托书
2014/09/22 职场文书
2014年置业顾问工作总结
2014/11/17 职场文书
幼儿园大班开学寄语(2016秋季)
2015/12/03 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书