9159金沙游艺场-奥门金沙游艺场-[欢迎您]

9159金沙游艺场为您呈现最新的面貌!,目前注册送体验金,欢迎您将成为影视娱乐行业新的风向标,是亚洲的优质娱乐先锋。

Python实现检测服务器是否可以ping通的2种方法91

日期:2020-01-04编辑作者:办公软件

Python落成检查实验服务器是还是不是能够ping通的2种艺术,pythonping

好想在二〇一四停止前再赶出个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 =='1n':
            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结果如下:

9159金沙游艺场 1

实则结果就三个 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!'

将以此搞成布置职务,每日跑几次,依然挺赞的。 呵呵。。

好想在贰零壹肆了结前再赶出个10篇博文来,~(_)~,不写博客真不是三个好征兆,起码表明...

本文由9159金沙游艺场-奥门金沙游艺场-[欢迎您]发布于办公软件,转载请注明出处:Python实现检测服务器是否可以ping通的2种方法91

关键词:

Centos7搭建本地仓库9159金沙游艺场

Centos7搭建本地仓库 centos7上搭建了本地仓库,记录过程如下: 1,下载centos7的iso文件,我下载的为:CentOS-7.0-1406-x86...

详细>>

python学习笔记九9159金沙游艺场

python学习笔记九:异常,python学习笔记九: 一、语法 #!/usr/bin/pythonfilename='hello'#try except finally demotry: open('abc.txt') prin...

详细>>

Linux利器直达常用目录避免频繁cd切换目录

Linux利器直达常用目录避免频繁cd切换目录 把源码复制到你的用户目录下的z.sh文件,然后用vim打开.bashrc这个目录,在...

详细>>

python对MySQL的CRUD9159金沙游艺场

python对MySQL的CRUD python对各种数据库的各种操作满大街都是,不过,我还是喜欢我这种风格的,涉及到其它操作,不过...

详细>>