python检测IP通不通的方法

  介绍

小编给大家分享一下python检测IP通不通的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获、下面让我们一起去学习方法吧!

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

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

壳脚本再简单不过了,平。sh如下:

# !/bin/bash   萍=' ping  -c  3, 1美元,|,grep  & # 39; 0,收到# 39;,|,wc  - l '   echo  $ PING

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

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

#检查IP能否PING通   # 0:正常,1:ping不通   def  check_ip_ping ():   时间=record  get_ip(), #从数据库中读取的IP列表   for 小姐:拷贝范围(0,len(记录):   时间=p  subprocess.Popen ([" # 39;。/ping.sh& # 39;,记录[我]],stdout=subprocess.PIPE)   时间=result  p.stdout.read ()   Status =0   if  result ==& # 39; 1 \ n # 39;:   Status =1   # print 我记录[我]& # 39;——ping 失败——& # 39;   其他:   ping_ok.append(记录[我])   # print 我记录[我]& # 39;——ping 成功——& # 39;   mysql (& # 39; update  ip_connect  set 状态=% d  where  IP=? s" & # 39; %(状态,记录[我]))

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

 python检测IP通不通的方法

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

《外交政策》。承宪:

# !/bin/bash   rm  -f  result.txt   cat  ipmi_ping.txt  |, fping 祝辞,result.txt

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

代码如下:

def  check_online_ip ():   ip =, mysql (& # 39; select  *,得到ip_check& # 39;)   #将IP写进一个文件   if  os.path.exists (& # 39; iplist.txt& # 39;):   os.remove (& # 39; iplist.txt& # 39;)   iplist=, & # 39; iplist.txt& # 39;   for 小姐:拷贝范围(0,len (ip)):   with 开放(iplist, & # 39;一个# 39;),as  f:   f.write (ip[我][0]+ & # 39;\ n # 39;)   #对文件中的IP进行fp   时间=p  subprocess.Popen (" # 39;。/fping.sh& # 39;, stdout=subprocess.PIPE)   p.stdout.read ()   #读result.txt文件,将IP  is 不可到达的行提取更新mysql状态为1   时间=result 开放(& # 39;result.txt& # 39;, & # 39; " # 39;)   时间=content  result.read () .split (& # 39; \ n # 39;)   for 小姐:拷贝范围(0,len(内容)1):   时间=tmp 内容[我]   ip =, tmp [: tmp.index(& # 39;如果# 39;)1]   Status =0   if  & # 39;遥不可及的# 39;,tmp:拷贝   Status =1   # print 我,ip   mysql (& # 39; update  ip_check  set 状态=% d  where  IP=? s" & # 39; %(地位、IP))   print  & # 39; check  all  ipconnectness  ! & # 39;

以上是python检测IP通不通的方法的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

python检测IP通不通的方法