对python判断ip是否可达的实例详解


Posted in Python onJanuary 31, 2019

python中使用subprocess来使用shell

from __future__ import print_function
import subprocess
import threading

def is_reachable(ip):
  if subprocess.call(["ping", "-c", "2", ip])==0:#只发送两个ECHO_REQUEST包
    print("{0} is alive.".format(ip))
  else:
    print("{0} is unalive".format(ip))
if __name__ == "__main__":
  ips = ["www.baidu.com","192.168.0.1"]
  threads = []
  for ip in ips:
    thr = threading.Thread(target=is_reachable, args=(ip,))#参数必须为tuple形式
    thr.start()#启动
    threads.append(thr)
  for thr in threads:
    thr.join()

改良 :使用Queue来优化(FIFO)

from __future__ import print_function
import subprocess
import threading
from Queue import Queue
from Queue import Empty

def call_ping(ip):
  if subprocess.call(["ping", "-c", "2", ip])==0:
    print("{0} is reachable".format(ip))
  else:
    print("{0} is unreachable".format(ip))


def is_reachable(q):
  try:
    while True:
      ip = q.get_nowait()#当队列为空,不等待
      call_ping(ip)
  except Empty:
    pass


def main():
  q = Queue()
  args = ["www.baidu.com", "www.sohu.com", "192.168.0.1"]
  for arg in args:
    q.put(arg)

  threads = []
  for i in range(10):
    thr = threading.Thread(target=is_reachable, args=(q,))
    thr.start()
    threads.append(thr)
  for thr in threads:
    thr.join()

if __name__ == "__main__":
  main()

以上这篇对python判断ip是否可达的实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基础入门之seed()方法的使用
May 15 Python
Python中的变量和作用域详解
Jul 13 Python
使用Flask集成bootstrap的方法
Jul 24 Python
python面向对象 反射原理解析
Aug 12 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
python深copy和浅copy区别对比解析
Dec 26 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
对python:threading.Thread类的使用方法详解
Jan 31 #Python
python实现一个简单的ping工具方法
Jan 31 #Python
Python获取网段内ping通IP的方法
Jan 31 #Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 #Python
python重试装饰器的简单实现方法
Jan 31 #Python
Python实现合并两个有序链表的方法示例
Jan 31 #Python
Django 日志配置按日期滚动的方法
Jan 31 #Python
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
Django用户身份验证完成示例代码
2020/04/03 Python
django正续或者倒序查库实例
2020/05/19 Python
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
历史专业大学生职业生涯规划书
2014/03/13 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
房租涨价通知
2015/04/23 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
MySQL的join buffer原理
2021/04/29 MySQL
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
SpringBoot快速入门详解
2021/07/21 Java/Android