对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 相关文章推荐
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python程序中的观察者模式结构编写示例
May 27 Python
Python深入06——python的内存管理详解
Dec 07 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python实现两个list对应元素相减操作示例
Jun 09 Python
分享一个简单的python读写文件脚本
Nov 25 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
python regex库实例用法总结
Jan 03 Python
Pandas的数据过滤实现
Jan 15 Python
Python入门学习之类的相关知识总结
May 25 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 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中过滤非法字符的具体实现
2013/10/29 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
javascript innerText和innerHtml应用
2010/01/28 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
javascript伸缩型菜单实现代码
2015/11/16 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python中__name__的使用实例
2015/04/14 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
省三好学生申请材料
2014/01/22 职场文书
感恩教育月活动总结
2014/07/07 职场文书
增值税发票丢失证明
2015/06/19 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
2022/05/30 NodeJs