对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之字典,你还记得吗?
Sep 20 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
python 编写简单网页服务器的实例
Jun 01 Python
快速解决pandas.read_csv()乱码的问题
Jun 15 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
Python中断多重循环的几种方式详解
Feb 10 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
PyQt5如何将.ui文件转换为.py文件的实例代码
May 26 Python
Python调用shell cmd方法代码示例解析
Jun 18 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
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
javascript 保存文件到本地实现方法
2012/11/29 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
axios学习教程全攻略
2017/03/26 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
关于vue中 $emit的用法详解
2018/04/12 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
VueJS 取得 URL 参数值的方法
2019/07/19 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
python简单获取数组元素个数的方法
2015/07/13 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
python如何保存文本文件
2020/06/07 Python
Numpy数组的广播机制的实现
2020/11/03 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
2013/01/31 HTML / CSS
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
应聘医药代表职位求职信
2013/10/21 职场文书
安全教育心得体会
2013/12/29 职场文书
清明节演讲稿
2014/05/27 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers
python中pycryto实现数据加密
2022/04/29 Python