在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读取json文件并将数据插入到mongodb的方法
Mar 23 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
Python列表的切片实例讲解
Aug 20 Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 Python
python常用数据重复项处理方法
Nov 22 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Python 如何实现访问者模式
Jul 28 Python
Pytorch实验常用代码段汇总
Nov 19 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
jquery 操作表格实现代码(多种操作打包)
2011/03/20 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
详解jQuery选择器
2016/12/21 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
jquery插件开发模式实例详解
2019/07/20 jQuery
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python创建模块及模块导入的方法
2015/05/27 Python
构建Python包的五个简单准则简介
2015/06/15 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python用户管理系统的实例讲解
2017/12/23 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
Python交互环境下实现输入代码
2018/06/22 Python
python opencv实现运动检测
2018/07/10 Python
使用python模拟命令行终端的示例
2019/08/13 Python
pytorch-RNN进行回归曲线预测方式
2020/01/14 Python
python操作yaml说明
2020/04/08 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
班长自荐书范文
2014/02/11 职场文书
校长四风对照检查材料
2014/09/27 职场文书
父亲节寄语大全
2015/02/27 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
Python实现单例模式的5种方法
2021/06/15 Python