对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 相关文章推荐
基于windows下pip安装python模块时报错总结
Jun 12 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
django表单的Widgets使用详解
Jul 22 Python
下载官网python并安装的步骤详解
Oct 12 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
Feb 28 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
Python中的min及返回最小值索引的操作
May 10 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python中内建函数的简单用法说明
2016/05/05 Python
python实现树形打印目录结构
2018/03/29 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
pandas计数 value_counts()的使用
2019/06/24 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
教师师德反思材料
2014/02/15 职场文书
知识竞赛活动方案
2014/02/18 职场文书
教师群众路线心得体会
2014/11/04 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
狂人日记读书笔记
2015/06/30 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB