python判断ip能否ping通_Python实现检测服务器是否可以ping通的2种方法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值