对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 相关文章推荐
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
python+matplotlib实现礼盒柱状图实例代码
Jan 16 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python字符串对象实现原理详解
Jul 01 Python
python和c语言的主要区别总结
Jul 07 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
python 元组的使用方法
Jun 09 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
在Django中使用MQTT的方法
May 10 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
对laravel in 查询的使用方法详解
2019/10/09 PHP
Javascript调用C#代码
2011/01/17 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
2017/10/15 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
如何测量vue应用运行时的性能
2019/06/21 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
浅谈vue3中effect与computed的亲密关系
2019/10/10 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
python实现随机密码字典生成器示例
2014/04/09 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
创建Django项目图文实例详解
2019/06/06 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
C语言笔试题
2014/09/04 面试题
大学新生军训个人的自我评价
2013/10/03 职场文书
个人培训自我鉴定
2014/03/28 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
护理医院见习报告
2014/11/03 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
上诉状格式
2015/05/23 职场文书