对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科学画图代码分享
Nov 29 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
浅谈flask源码之请求过程
Jul 26 Python
python3使用flask编写注册post接口的方法
Dec 28 Python
通过python爬虫赚钱的方法
Jan 29 Python
python面试题Python2.x和Python3.x的区别
May 28 Python
python实现桌面气泡提示功能
Jul 29 Python
Python单元测试与测试用例简析
Nov 09 Python
Django mysqlclient安装和使用详解
Sep 17 Python
Python通过递归函数输出嵌套列表元素
Oct 15 Python
GitHub上值得推荐的8个python 项目
Oct 30 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的知识
2006/11/17 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP在线书签系统分享
2016/01/04 PHP
php中使用GD库做验证码
2016/03/31 PHP
js 函数的副作用分析
2011/08/23 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
python 判断自定义对象类型
2009/03/21 Python
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
python实现目录树生成示例
2014/03/28 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
使用Python对Access读写操作
2017/03/30 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
浅谈cookie和localStorage那些事
2019/08/27 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
鲁迅故居导游词
2015/02/05 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android
mysql数据库隔离级别详解
2022/06/16 MySQL