美文网首页
python如何检测IP通不通

python如何检测IP通不通

作者: 爱喝马黛茶的安东尼 | 来源:发表于2019-12-09 17:46 被阅读0次

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列表

fori in range(0,len(record)):

p = subprocess.Popen([r'./ping.sh',record[i]],stdout=subprocess.PIPE)

result = p.stdout.read()

Status = 0

ifresult =='1\n':

Status = 1

#printi,record[i],'----ping failed----'

else:

ping_ok.append(record[i])

#printi,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写进一个文件

ifos.path.exists('iplist.txt'):

os.remove('iplist.txt')

iplist= 'iplist.txt'

fori in range(0,len(ip)):

with open(iplist, 'a') asf:

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')

fori in range(0,len(content)-1):

tmp = content[i]

ip = tmp[:tmp.index('is')-1]

Status = 0

if'unreachable'in tmp:

Status = 1

#printi,ip

mysql('update ip_check set Status=%d where IP="%s"'%(Status,ip))

print'check all ipconnectness over!'

本文转自:https://www.py.cn/jishu/jichu/14771.html

相关文章

  • python如何检测IP通不通

    python检测服务器是否ping通的2种方法 1、第一种比较挫,就是用ping,python调用shell,这个...

  • IP ping不通,但端口为什么却可以登录呢?

    IP ping不通,但端口却是通的,“玩坏了”又长见识了。 在“玩坏了”的认知中,一个IP地址如果ping不通,那...

  • 如何检测经络不通

    艾灸是一种可以保健治病的自然疗法。艾灸强调由内而外的调理,同时艾叶又是一种自然无公害的药草,所以备受各类人群的推崇...

  • 限制非安全IP访问

    /** 安全IP检测,支持IP段检测 @param string $ip 要检测的IP @param string...

  • CentOS ping得通ip ping不同域名

    现象:1. ping不通域名,比如 www.qq.com 2. 可以ping通ip,比如 61.135.157.1...

  • linux常见问题汇总

    一. 远程不了: ssh服务未开启, 线路不通, ping IP 是否能ping通 防火墙iptanles, /e...

  • WIFI相关功能总结

    1.Ping域名、Ping某IP有时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作。这里的ping与...

  • python-nmap

    python扫描网站并且获取端口信息 检测ip存活性再进行nmap扫描存入的均为open状态

  • Internet控制报文协议(ICMP)

    它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、...

  • linux常用工具记录

    网络 nc 检测 Tcp或Udp端口是否可通 netstat 查看端口 iperf3 流量测试工具 ip 命令与 ...

网友评论

      本文标题:python如何检测IP通不通

      本文链接:https://www.haomeiwen.com/subject/pqligctx.html