对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中用于转换字母为小写的lower()方法使用简介
May 19 Python
django实现分页的方法
May 26 Python
python检查指定文件是否存在的方法
Jul 06 Python
Python编程中的for循环语句学习教程
Oct 14 Python
django的登录注册系统的示例代码
May 14 Python
更新修改后的Python模块方法
Mar 03 Python
Python2与Python3的区别实例分析
Apr 11 Python
Django框架实现分页显示内容的方法详解
May 10 Python
python plotly画柱状图代码实例
Dec 13 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
编写python代码实现简单抽奖器
Oct 20 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
php实现的在线人员函数库
2008/04/09 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js的toLowerCase方法用法实例
2015/01/27 Javascript
理解AngularJs指令
2015/12/10 Javascript
去除字符串左右两边的空格(实现代码)
2016/05/12 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
推荐15个最好用的JavaScript代码压缩工具
2019/02/13 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
介绍一下Make? 为什么使用make
2016/07/31 面试题
学校经典推荐信
2013/10/30 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
建议书标准格式
2014/03/12 职场文书
护士感人事迹
2014/05/01 职场文书
学校教师安全责任书
2014/07/23 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis
JS实现简单九宫格抽奖
2022/06/28 Javascript