`
zhao_rock
  • 浏览: 190147 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

用Python实现ping远程主机的工具

 
阅读更多

由于需要维护的机器比较多,有时需要ping主机的状态,时间久了就想写个工具,正好在学习python,而且又比较喜欢python跨平台的特点,最终选择python来实现

 

代码如下:

#!/usr/bin/python
import os
import re
import platform

def validateIP(ipStart,ipEnd):
    p = re.compile('([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}')
    if p.match(ipStart) and p.match(ipEnd):
        if ipStart[:ipStart.rfind(".")] <> ipEnd[:ipEnd.rfind(".")]:
            print "Do not support different Net segment"
            exit(0)
    else:
        print "invalid IP Address"
        exit(0)
    
def checkPing(ipStart,ipEnd):
    ''' create result txt '''
    if os.path.isfile("PingHostResult.txt"):
        os.remove("PingHostResult.txt")
    fp = open("PingHostResult.txt","w")
    
    ''' check different os '''
    if platform.system() == 'Linux' :
        cmd = 'ping -c 4 %s'
    else:
        cmd = 'ping -n 4 -w 1 %s'
    if ipStart == ipEnd :
        backInfo = os.system(cmd%ipStart)
        if backInfo == 0 :
            result = ipStart+' is ok'
        else:
            result = ipStart+' no response'
        fp.writelines(result)
    else:
        ipMin = ipStart[ipStart.rfind(".")+1:]
        ipMax = ipEnd[ipEnd.rfind(".")+1:]
        for i in range (int(ipMin),int(ipMax)+1):
            targetIp = ipStart[:ipStart.rfind(".")]+"."+str(i)
            backInfo = os.system(cmd%targetIp)
            if backInfo == 0 :
                result = targetIp+' is ok'
            else:
                result = targetIp+' no response'
            fp.writelines(result+os.linesep)
    fp.flush()
    fp.close()

if __name__ == "__main__":
    ipStart = raw_input("PLS input Start ipAddress: ")
    ipEnd =  raw_input("PLS input End ipAddress: ")
    validateIP(ipStart,ipEnd)
    checkPing(ipStart,ipEnd)
    ''' result output'''
    for item in open("PingHostResult.txt","r").readlines():
        print item

 

脚本还有很多漏洞和不足,以及不规范之处,希望前辈们能够多多指出!!!

 

目前遇到的问题:

windows下ping一个已经挂掉了的主机,发出去的包也会收回来,比较迷惑,希望高手能够指点!

暂时的解决办法是指定 -w 1 等待时间超过1s,就认为没有响应

 

 

 

 

0
0
分享到:
评论

相关推荐

    python 自定义ping ssh函数(csdn)————程序.pdf

    这个文件中介绍了如何使用Python实现自定义的ping功能以及SSH登录设备执行命令的功能。 1. 自定义ping函数: 在Python中,我们可以使用第三方库kamene(原名Scapy)来构造和发送ICMP协议的ping请求。首先,通过`...

    Python-提供一个web界面检测主机是否在线

    在Python中,我们可以使用`socket`库或者第三方库如`ping3`来实现这个功能。`socket`库允许我们创建自定义的网络连接,而`ping3`库则封装了ping操作,使其更加简单易用。 为了在Web界面展示结果,我们需要创建一个...

    通过类调用socket API方法ping远程机器源代码

    在IT领域,网络通信是不可或缺的一部分,而`ping`命令是一种常用的网络诊断工具,用于测试网络连接性。本文将深入探讨如何通过编程实现一个基于`ICMP`协议的`ping`功能,具体以类的形式调用`socket` API来完成这一...

    c#远程调用linux服务器的Python脚本(csdn)————程序.pdf

    标题中的"C#远程调用Linux服务器的Python脚本"指的是使用C#编程语言从Windows客户端远程执行在Linux服务器上托管的Python脚本。这通常涉及到跨平台通信和远程过程调用(RPC)技术。描述中提到的问题和解决方案集中在...

    Python利用WMI实现ping命令的例子

    通过这个简单的示例,我们可以看到如何使用Python结合WMI实现ping命令。这仅仅是个开始,实际上,WMI提供了大量的类和方法,可用于监控系统状态、管理网络设备、控制进程和服务等。因此,熟练掌握WMI和Python的结合...

    PingMonitor:针对远程主机测试ping

    简单的工具,用于根据所需目标测试和记录ping(无论是网站还是位于下面的路由器楼层) Ping Monitor使用vis.js库对ping时间轴进行可视化。 要求 要运行PingMonitor,您需要安装Python(版本3.x),并使用HTML客户端...

    使用python检测主机存活端口及检查存活主机

    在给定的部分内容中,我们看到一个使用Python编写的简单程序,它能够扫描远程主机的端口并确定哪些端口处于打开状态。 ```python #!/usr/bin/env python # coding=utf-8 import argparse import socket import sys ...

    Python库 | quickping-1.0.0-py3-none-any.whl

    它提供了一个简单易用的接口,允许程序员快速发送ICMP(Internet Control Message Protocol)ping请求来检查远程主机的可达性。ICMP ping是一种网络诊断工具,通过发送ICMP回显请求数据包到目标主机,然后等待目标...

    连续批量的Ping测试

    端口扫描是网络安全和系统管理中的一个重要概念,主要用于发现远程主机上哪些端口是开放的,这有助于识别潜在的安全漏洞和服务状态。常见的端口扫描工具有Nmap、Masscan等,它们可以快速地对目标IP地址范围内的所有...

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

    通常我们会使用`ping`命令来检测与远程主机的连接状态。对于需要批量测试多个IP地址的情况,手动逐个执行`ping`命令显然是低效且耗时的。本文将介绍一种利用Python脚本自动化执行批量IP地址`ping`测试的方法,这种...

    局域网内主机与端口扫描(资料)

    这些文档可能涵盖了使用Python编写的端口扫描工具的实现细节和优化策略。 4. **telnet命令用法**:telnet是一种远程登录协议,可用于测试网络服务是否可用。通过telnet命令,我们可以尝试连接到特定端口,如果连接...

    获取主机用户名和IP

    如果要获取远程主机的IP,可以使用`ping`命令,它会返回目标主机的IP。 - 编程方式:在Python中,可以使用`socket.gethostbyname(socket.gethostname())`获取本机IP,使用`socket`库的`connect()`方法连接远程...

    shtools:一些有用的bash工具以纯python编写

    通过NTP设置日期和时间ping:将ICMP ECHO_REQUEST发送到网络主机psql:postgresql cli rediscli:redis cli scp:安全复制(远程文件复制程序) sh:壳ssh:OpenSSH SSH客户端(远程登录程序)例子from shtools ....

    从ansible,聊聊配置管理工具

    核心模块命令部分介绍了几个常见的Ansible命令,比如ansible-doc用于查询模块的详细信息,ping模块用于测试远程机器的通信状态,setup模块用于查看远程主机的一些基本信息,command模块和raw模块均用于在远程机器上...

    自动化运维工具ansible学习笔记.pdf

    这些模块可以通过SSH、WinRM等方式部署到远程主机上执行特定任务。 - **Core Modules**:核心模块由Ansible提供,用于执行基本的操作。 - **Custom Modules**:当核心模块无法满足特定需求时,可以编写自定义模块...

    ansible入门培训.pptx

    2. `template`模块可以使用Jinja2模板语言动态生成文件并将其传输到远程主机。 3. `file`模块可以管理文件和目录,如创建、删除、改变权限等。 4. `service`模块用于启动、停止或重启服务。 5. `package`模块可以...

    如何获取主机名和IP地址

    可以使用`System.Environment`类的`MachineName`属性来获取主机名。示例代码如下: ```csharp using System; class Program { static void Main() { Console.WriteLine("主机名: " + Environment.MachineName)...

    部署ansible管理工具

    它无需在客户端安装代理软件即可进行工作,通过SSH协议实现对远程主机的管理,极大地简化了运维人员的工作。 **主要特点**: 1. **模块化**:Ansible是模块化的,这意味着可以通过调用特定的模块来完成特定的任务...

    Marvin:使用用于监视本地和远程设备的工具构建的跨数百个目标的网络性能数据可视化,帮助您快速发现和解决问题

    在 Python 中,可以使用 `icmp-ping` 实现类似的功能。ICMP(Internet Control Message Protocol)是一种网络层协议,用于在 IP 层面上发送错误和控制消息。Marvin 可能通过发送 ICMP 回显请求(即 ping 请求)来...

    Exercise 5.docx

    1. **Ping协议简介**:Ping协议允许客户端向远程主机发送一包数据,并期望该主机将数据原样返回给客户端,这一过程被称为“回显”操作。通常,Ping协议用于检测主机之间的连通性以及测量往返时间。 2. **UDP协议...

Global site tag (gtag.js) - Google Analytics