对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代码打包为jar软件的简单方法
Aug 04 Python
Python内置模块logging用法实例分析
Feb 12 Python
深入浅析python with语句简介
Apr 11 Python
使用TensorFlow实现SVM
Sep 06 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python小程序实现刷票功能详解
Jul 17 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
python中24小时制转换为12小时制的方法
Jun 18 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
Yii框架form表单用法实例
2014/12/04 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
最佳JS代码编写的14条技巧
2011/01/09 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[01:06:39]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第三局
2016/03/02 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python程序如何进行保存
2020/07/03 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
升职自荐书范文
2013/11/28 职场文书
大学生职业生涯规划书范文
2014/01/04 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
校园安全教育广播稿
2014/02/17 职场文书
卖车协议书
2014/04/21 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
具结保证书
2015/01/17 职场文书
总经理岗位职责范本
2015/04/01 职场文书
陪护人员误工证明
2015/06/24 职场文书
2015选调生工作总结
2015/07/24 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
PyMongo 查询数据的实现
2021/06/28 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js
A22国内电台短波广播频率表
2022/05/10 无线电