在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中尾递归用法实例详解
Apr 28 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
python矩阵转换为一维数组的实例
Jun 05 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
解决Python设置函数调用超时,进程卡住的问题
Aug 08 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
Python读写锁实现实现代码解析
Nov 28 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
Pytorch - TORCH.NN.INIT 参数初始化的操作
Feb 27 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脚本的10个技巧(5)
2006/10/09 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
js实现日历与定时器
2017/02/22 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
Array.filter中如何正确使用Async
2020/11/04 Javascript
Python3计算三角形的面积代码
2017/12/18 Python
Python实现网站表单提交和模板
2019/01/15 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
使用Python pip怎么升级pip
2020/08/11 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
师范大学毕业自我鉴定
2013/11/21 职场文书
酒店中秋节促销方案
2014/01/30 职场文书
销售岗位职责范本
2014/06/12 职场文书
医院合作协议书
2014/08/19 职场文书
先进班组事迹材料
2014/12/25 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
2016年元旦主持词
2015/07/06 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
拙作再改《我的收音机情缘》
2022/04/05 无线电