python检测服务器是否ping通

好想在2014结束前再赶出个10篇博文来,~(>_<)~,不写博客真不是一个好兆头,至少说明对学习的欲望和对知识的研究都不是那么积极了,如果说这1天的时间我能赶出几篇精致的博文,你们信不信,哈哈,反正我是信了。。。

python检测服务器是否ping通的2种方法

1、第一种比较挫,就是用ping,python调用shell,这个适用于较少的服务器数量,几百台已经很慢了(当然是说python同步的方法,要是nodejs异步方式还是很快的,但是nodejs CPU计算不行,所以尝试了下只能200台左右的服务器可以同时ping,再多的话程序也会崩掉)

shell脚本再简单不过了,ping.sh如下:

#!/bin/bash
PING=`ping -c 3 $1 | grep ‘0 received‘ | wc -l`
echo $PING

其实很简单,ping 3个包,只要ping通,上述返回的结果就不是0。$1是传入的第一个参数,即IP

思路很简单的,从数据库读出IP 列表,然后调用上述脚本:

#检查ip能否ping通
#0:正常,1:ping不通
def check_ip_ping():
    record = get_ip() #从数据库中读取的IP列表
    for i in range(0,len(record)):
        p = subprocess.Popen([r‘./ping.sh‘,record[i]],stdout=subprocess.PIPE)
       result = p.stdout.read()
        Status = 0
        if result ==‘1\n‘:
            Status = 1
            #print i,record[i],‘----ping failed----‘
        else:
            ping_ok.append(record[i])
            #print i,record[i],‘----ping success----‘
        mysql(‘update ip_connect set Status=%d where IP="%s"‘%(Status,record[i]))

2、比这种快很多,适合服务器数量较大时使用,fping命令,它是对一个文件的批量ping,瞬间完成的,如果ping不通,那就较慢,日常ping不通的毕竟是少数,所以这个非常适用。来感受一下,它ping的结果,新建一个文件iplist,里面是IP列表,fping结果如下:

其实结果就两个 is alive / is unrreachable ,其它的中间检测时它自己输出的不用理会。

fping.sh :

#!/bin/bash
rm -f result.txt
cat ipmi_ping.txt | fping > result.txt

思路也很简单,将IP列表读取来写进一个iplist文件,然后再对这个文件fping(调用fping.sh)批量执行的结果写进result文件:

def check_online_ip():
    ip = mysql(‘select * from ip_check‘)

    #将IP写进一个文件
    if os.path.exists(‘iplist.txt‘):
        os.remove(‘iplist.txt‘)
    iplist= ‘iplist.txt‘
    for i in range(0,len(ip)):
        with open(iplist, ‘a‘) as f:
            f.write(ip[i][0]+‘\n‘)

    #对文件中的IP进行fping
    p = subprocess.Popen(r‘./fping.sh‘,stdout=subprocess.PIPE)
    p.stdout.read()

    #读result.txt文件,将IP is unreachable的行提取更新mysql状态为1
    result = open(‘result.txt‘,‘r‘)
    content = result.read().split(‘\n‘)
    for i in range(0,len(content)-1):
        tmp = content[i]
        ip = tmp[:tmp.index(‘is‘)-1]
        Status = 0
        if ‘unreachable‘ in tmp:
            Status = 1
        #print i,ip
        mysql(‘update  ip_check set Status=%d where IP="%s"‘%(Status,ip))
    print ‘check all ipconnectness over!‘

将这个搞成计划任务,每天跑几遍,还是挺赞的。 呵呵。。

时间: 2024-08-28 12:12:39

python检测服务器是否ping通的相关文章

批量检测服务器能否ping通和硬盘容量状态的一个脚本

有一些linux基础,最经刚开始学shell,参考了阿良老师的一个监测服务器硬盘状态的脚本,自己进行了一些扩展,今天比较晚了,后边会把注释放上来,感觉脚本还很不完善,希望大家一起探讨一下,共同学习 #!/bin/shsource /etc/profilesource /root/.bashrcHOST_INFO=${PWD}/all_hosts.infoTMP_FILE=${PWD}/all_tmp.logALERT_FILE=${PWD}/all_alert.logecho null > $A

远程服务器可以ping通,但ssh连接不上的问题解决

最近遇到远程阿里云服务器可以ping通,但ssh连接不上的问题,分析过程如下.1.检查远程服务器的sshd服务是否正常,检查结果是没问题,端口也正常运行.2.用tcpdump src host xxx.xxx.xxx.xx进行抓包,发现有收到客户端的包,说明sshd服务和基本连接都没问题3.怀疑和以前遇到的阿里云服务器MTU值要求比较低有关,用命令修改MTU值就能连上远程服务器了.sudo ip link set dev eth0 mtu 1200 原文地址:http://blog.51cto.

服务器不能ping通自身IP地址

有一次研发的一个哥们,ping自身IP或自己的主机名称时,出现ping不通的情况. 与其他机器做了对比,发现/etc/sysconfig/network目录下的ifcfg-lo文件为空, 使用"ifconfig lo"查看时也是没有127.0.0.1这个地址. 解决办法,从其他机器复制ifcfg-lo文件到本机. 然后,"ifconfig lo up" ifconfig lo up ping <local_self_ip> 即可解决.

使用python检测一个设备是否ping的通

使用python检测一个设备是否ping的通 一,subprocess以及常用的封装函数 运行python的时候,我们都是在创建并运行一个进程.像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序. subprocess 包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用.另外subprocess还提供了

阿里云服务器本地ping超时,远程可以正常ping通

问题: 1.在本地:ping 域名 出现如下结果: 可以看到已经由域名(1)解析出了对应的ip,说明域名解析没有问题.提示请求超时. 2..连接上服务器,ping了一下 可以看到可以ping通 解决办法: 1.进入管理中心-->点击如图更多 2.继续 3.进来可以看到安全组配置 -->点击配置规则 4.可以看到系统已经为我们配置的安全组规则,一般不要删除.在此处我们点击--> 添加安全组规则 5.这样添加一条规则:授权对象 0.0.0.0/0 表示实例(服务器) 所有ip都可以访问 6.

tnsping无法ping通的问题,TNS-12535 TNS操作超时 (服务器环境:window server 2008R2 数据库环境:oracle 11 g)

今天新搭建一个测试用的数据库服务器,操作系统为WIN server 2008 r2 版本.系统内已安装oracle 11g database,数据库服务端已配置完毕,监听listener已开启. 我在通局域网内的其他PC端,操作系统为 win 7 64 旗舰. 配置oracle 10g 32 client,客户端配置完毕.命名完毕.tns服务名设置为 test 当我去测试tns联通情况的时候,反馈我TNS-12535 TNS操作超时,无法正常联通. 一.我先查了一下客户端安装路径下的networ

实例节点的NTP服务器地址配置正确,而且能够ping通, 但是在chronyc sources指令中显示NTP服务器状态为“?”

问题:如果实例节点的NTP服务器地址配置正确,而且能够ping通,   但是在chronyc sources指令中显示NTP服务器状态为“?”, 该如何检查并操作. 1)在chrony配置文件中,检查NTP服务器在当前网段是否打开allow的功能. 2)检查防火墙是否关闭. 原文地址:https://www.cnblogs.com/l-a-s/p/11525514.html

ubuntu 开发板ping通虚拟机挂载nfs服务器

先.nfs服务配置1.设置开发板ip ,同一网段2.开发板上操作:ifconfig eth0 192.168.1.203.测试是否能够ping通:ping 192.168.1.194.测试开发板ip是否被占用: 在主机上:sudo ifconfig eth0 down,看开发板上的ip是否断开.重启网络:/etc/init.d/networking force-reload/etc/init.d/networking restart mount 192.168.1.19:/opt/target

检测服务器端口是否被封(墙)

目录 #在国内测试服务器端口是否通 #在国外测试服务器端口是否通 #在国内外同时测试服务器端口是否通 #说明 #在国内测试服务器端口是否通 工具:http://tool.chinaz.com/port #在国外测试服务器端口是否通 工具:https://www.yougetsignal.com/tools/open-ports/ #在国内外同时测试服务器端口是否通 工具:http://port.ping.pe/ 从上图中可以看出该工具可以从世界各地测试某个服务器的端口是否通,示例中的端口除了ch