网络编程
位置:首页>> 网络编程>> Python编程>> Python基于多线程实现ping扫描功能示例

Python基于多线程实现ping扫描功能示例

作者:wanlifeipeng  发布时间:2023-08-02 17:30:09 

标签:Python,多线程,ping

本文实例讲述了Python基于多线程实现ping扫描功能。分享给大家供大家参考,具体如下:


# -*- coding:utf-8 -*-
#! python2
import subprocess
from Queue import Queue
import threading
class Pinger(object):
 def __init__(self, ip_list, thread_num=2):
   self._ip_list = ip_list
   self._thread_num = thread_num
   self._queue = Queue(len(ip_list))
 def ping(self, thread_id):
   while True:
     if self._queue.empty():
       break
     addr = self._queue.get()
     print 'Thread %s: Ping %s' % (thread_id, addr)
     ret = subprocess.call('ping -c 1 %s' % (addr),
                shell=True,
                stdout=open("/dev/null", 'w'),
                stderr=subprocess.STDOUT)
     if ret == 0:
       print '%s: is still alive' % addr
     else:
       print '%s: did not respond ' % addr
     self._queue.task_done() #unfinished tasks -= 1
 def run(self):
   for ip in self._ip_list:
     self._queue.put(ip) #unfinished_tasks += 1
   print '---------------------task begin------------------'
   for i in range(self._thread_num):
     thrd = threading.Thread(target=self.ping, args=(i + 1,))
     #thrd.setDaemon(True)
     thrd.start()
   self._queue.join() # 主线程一直阻塞,一直等到Queue.unfiinshed_tasks == 0
   print '---------------------task done-------------------'

希望本文所述对大家Python程序设计有所帮助。

来源:http://www.cnblogs.com/hupeng1234/p/6729810.html

0
投稿

猜你喜欢

  • cooper谈到用户的视觉路径一般是:从上到下,从左到右。好的视觉设计路径应该是顺应这样的用户习惯,糟糕的设计会让用户无所适从,焦点到处都是
  • 虽然我只是把豆瓣当作一个纪录工具来用,纪录下自己看过的电影、听过的音乐、读过的书籍,我几乎不关注豆瓣上的任何影评、乐评、音衣服之类的内容,但
  • 1,建立数据库文件cnbruce.mdb(不设计任何表)建立数据库的代码:<%  Option Explicit&
  • 第三章 XML的术语提纲:导言 一.XML文档的有关术语 二.DTD的有关术语导言初学XML最令人头疼的就是有一大堆新的术语概念要理解。由于
  • ISNULL     使用指定的替换值替换   NULL。   &nb
  • 如何使用Office Chart 9.0 制作图表?代码如下:chart90.asp<HTML><HEAD><
  • 如何检测某个对象是否有某个属性?第一想到的——没错,in:"prop" in obj这很完美,不过,还有不少人热衷下面的
  • 在做DHTML时,我们在某些情况下要用setAttribute(attri, value)方法定义元素的attribute。同时与getAt
  • 我们都一定对比过编程的轻松与简单性。虽然我们都确认php和perl是最容易学习和编程的语言,但我仍旧想知道,如果用php、asp、jsp以及
  • 代码如下:Class template Private c_Char, c_Path, c
  • 很多网站注册时都会要求输入电子邮箱,其应用场景是比较广的,例如注册账号接收验证码、注册成功通知、登录通知、找回密码验证通知等。本文将介绍如何
  • 在学会了SELECT语句的构造和用途之后你就该学习如何使用它了。在你所掌握的数据库工具下,这可能意味着你得按下某个写着“执行”字样的按钮。在
  • 关于中大型开发b/s开发中的缓存(cache),我的一些看法,有不正确的或者是有笔误的地方,请指正。thanks首先,应该了解基本的,对于缓
  • 准备在以后制作的网站中尝试一些变化,比如:先提交内容,后提示注册/登陆。感觉这样可以绑架更多用户……不想注册再发言?那就先让你上钩发言,然后
  • 每个 batch 前清空梯度,否则会将不同 batch 的梯度累加在一块,导致模型参数错误。然后我们将输入和目标张量都移动到所需的设备上,并
  • Player.playState0 Undefined Windows Media Player is in an undefined st
  • 今天把博客的日历脚本又改了一改,就帖上了,以后找起来方便一点,同时也给需要的人带来方便,本来还想加点功能再帖上来,不过我看还是没必要了,帖的
  • XPath(XML Path language)是一种处理XML文档段的语言。XSLT(Extensible Stylesheet Lang
  • 为什么是三谈为什么是三谈呢?一是因为这真的是一个被说烂的话题,二是因为太师傅在n年前就写过这篇再谈iframe自适应高度。之所以再提该问题,
  • jQuery 真是一个非常伟大的 javascript library,至少在我不会写 JS 的时候第一时间接触了它,虽然还有其他很多优秀的
手机版 网络编程 asp之家 www.aspxhome.com