当前位置: 首页 > 编程笔记 >

在Python中调用Ping命令,批量IP的方法

公孙鸿才
2023-03-14
本文向大家介绍在Python中调用Ping命令,批量IP的方法,包括了在Python中调用Ping命令,批量IP的方法的使用技巧和注意事项,需要的朋友参考一下

如下所示:

#!/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的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • rank ▲ ✰ vote url 6 1161 520 1167 url 在Python中调用外部命令? 怎么在Python脚本里调用外部命令?(就好像直接输入在Unix shell中或者windows的命令行里) 来来来,我给你叨咕叨咕各种方法和各自优缺点: os.system("命令加参数")把命令和参数传递给你系统的shell中.用这个命令的好处在于你可以一次运行好多命令还可以设置管道来进

  • 本文向大家介绍Python下调用Linux的Shell命令的方法,包括了Python下调用Linux的Shell命令的方法的使用技巧和注意事项,需要的朋友参考一下 有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的。那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法: 1. os 模块 1.1. os模块的exec方法族

  • 本文向大家介绍python批量生成本地ip地址的方法,包括了python批量生成本地ip地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python批量生成本地ip地址的方法。分享给大家供大家参考。具体分析如下: 这段代码用于在本地计算机上生成本地ip地址绑定到网卡,生成的是一个bat的批处理文件,运行此批处理文件,可以通过ipconfig查看 希望本文所述对大家的Python程

  • 本文向大家介绍Python获取网段内ping通IP的方法,包括了Python获取网段内ping通IP的方法的使用技巧和注意事项,需要的朋友参考一下 问题描述 在某些问题背景下,需要确认是否多台终端在线,也就是会使用我们牛逼的ping这个命令,做一些的ping操作,如果需要确认的设备比较少,也还能承受。倘若,在手中维护的设备很多。那么这无疑会变成一个恼人的问题。脚本的作用就凸显了。另外,我们需要使用

  • 本文向大家介绍python实现ping命令小程序,包括了python实现ping命令小程序的使用技巧和注意事项,需要的朋友参考一下 ping的原理是发送一个ICMP请求包,然后根据目的地址的应答包来判断是否能够和这个主机进行通信。 我们使用python实现,借助于scapy来进行编写程序。 但现在为止,我们的ping小程序就用python实现了,接下来就可以用wireshark工具抓包来看一下,进

  • 问题内容: 因此,我具有以下结构: 我运行了一个命令来调整它们的大小 现在我的目录看起来像这样 第一个问题是,我该如何重命名文件,以便仅拥有一个扩展名。不是两个。(基本上,我该如何清除最初的错误)? 第二个问题是,将来使用xargs,如何将模拟文件的扩展名更改为第二个命令? 问题答案: 我如何重命名文件,以便我只能拥有一个扩展名。 将来,使用xargs,如何将模拟文件的扩展名更改为第二个命令? 据