python 中的快速 ping 扫描

2023-12-28

因此,我尝试使用 python 获得与使用 bash 脚本类似的结果。

bash 脚本的代码:

    #!/bin/bash

    for ip in $(seq 1 254); do
        ping -c 1 10.10.10.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
    done

我想做的是以相似的速度获得相同的结果。我对每个版本的 python 脚本都遇到的问题是,与批处理脚本所需的几秒钟相比,它需要很长时间才能完成。

批处理文件大约需要 2 秒来扫描 /24 网络,而我使用 python 脚本所能得到的最好时间大约是 5-8 分钟。

最新版本的python脚本:

import subprocess

cmdping = "ping -c1 10.10.10."

for x in range (2,255):
    p = subprocess.Popen(cmdping+str(x), shell=True, stderr=subprocess.PIPE)

    while True:
        out = p.stderr.read(1)
        if out == '' and p.poll() != None:
            break
        if out != '':
            sys.stdout.write(out)
            sys.stdout.flush()

我在 python 中尝试了几种不同的方法,但无法达到 bash 脚本的速度。

有什么建议么?


多重处理 http://docs.python.org/2/library/multiprocessing.html

#!/usr/bin/python2

import multiprocessing
import subprocess
import os

def pinger( job_q, results_q ):
    DEVNULL = open(os.devnull,'w')
    while True:
        ip = job_q.get()
        if ip is None: break

        try:
            subprocess.check_call(['ping','-c1',ip],
                                  stdout=DEVNULL)
            results_q.put(ip)
        except:
            pass

if __name__ == '__main__':
    pool_size = 255

    jobs = multiprocessing.Queue()
    results = multiprocessing.Queue()

    pool = [ multiprocessing.Process(target=pinger, args=(jobs,results))
             for i in range(pool_size) ]

    for p in pool:
        p.start()

    for i in range(1,255):
        jobs.put('192.168.1.{0}'.format(i))

    for p in pool:
        jobs.put(None)

    for p in pool:
        p.join()

    while not results.empty():
        ip = results.get()
        print(ip)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中的快速 ping 扫描 的相关文章

  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • pip 列出活动 virtualenv 中的全局包

    将 pip 从 1 4 x 升级到 1 5 后pip freeze输出我的全局安装 系统 软件包的列表 而不是我的 virtualenv 中安装的软件包的列表 我尝试再次降级到 1 4 但这并不能解决我的问题 这有点类似于这个问题 http
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 使用 find 命令搜索直到第一个匹配项

    我只需要搜索可以在任何地方的特定目录有没有办法运行此命令直到第一个匹配 谢谢 我现在使用 find noleaf name experiment type d wc l 正如鲁道夫 米尔鲍尔 Rudolf M hlbauer 所提到的 qu
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 模拟pytest中的异常终止

    我的多线程应用程序遇到了一个错误 主线程的任何异常终止 例如 未捕获的异常或某些信号 都会导致其他线程之一死锁 并阻止进程干净退出 我解决了这个问题 但我想添加一个测试来防止回归 但是 我不知道如何在 pytest 中模拟异常终止 如果我只
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • 更改 Tk 标签小部件中单个单词的颜色

    我想更改 Tkinter 标签小部件中单个单词的字体颜色 我知道可以使用文本小部件来实现与我想要完成的类似的事情 例如使单词 YELLOW 显示为黄色 self text tag config tag yel fg clr yellow s
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐

  • malloc后如何获取内存块长度?

    我认为我无法像简单的那样检索分配的内存块的长度 lengthJava 中的函数 然而 我现在知道 当malloc 分配块时 它会分配额外的字节来保存包含块大小的整数 该整数位于块的开头 实际返回给调用者的地址指向刚刚超过该长度值的位置 问题
  • 在 java (JSP) 中将十进制 NCR 代码转换为 UTF-8

    我试图将 FARSI 字符串解码为 UTF 8 但后来我检查了浏览器本身将 FARSI 字符串转换为十进制 NCR 代码 我如何将十进制 NCR 代码转换为 UTF 8 String farMsg String finalMsg new S
  • JCarousel 和 Cufon 不合作:动画让 cufon 消失

    我将 cufon 与 jCarousel 一起使用 轮播中有五个项目 并从右向左旋转 换句话说 它们从屏幕向左旋转 你可以在这里看到它 http www foursquare org site test http www foursquar
  • 使用 Parse.com 解析 xml/HTML 字符串

    我需要解析 parse com 的云代码中的 XML HTML 文件 我有一个字符串 其中包含 html 文件的源代码 我已经尝试过 jsdom 等多个框架 但在 Parse com cloudcode 环境中似乎没有任何效果 例如 此代码
  • React/ZMQ/Ratchet - Websocket 服务器响应

    我目前已经有一个正在运行并使用 Ratchet PHP 的 Web 套接字服务器 我还没有处于希望外部脚本与我的服务器进行通信的阶段 我可以使用 ZMQ 成功地将数据推送到它 push php json name gt Joe Bloggs
  • Pyarrow 从 s3 读取/写入

    是否可以在 s3 中的一个文件夹中读取和写入 parquet 文件到另一个文件夹 而无需使用 pyarrow 将其转换为 pandas 这是我的代码 import pyarrow parquet as pq import pyarrow a
  • 如何使用 Gnuplot 4.6 跟踪图表中的趋势线?

    我有这些数据 2019 08 28 384 2019 08 29 394 2019 08 30 406 2019 08 31 424 2019 09 01 439 2019 09 02 454 2019 09 03 484 和 gnuplo
  • 有没有一种简单的方法来列出带有供应商前缀的 CSS3 关键帧?

    目前我必须列出所有变体 webkit keyframes show from background color rgba 0 0 0 0 to background color rgba 0 0 0 0 8 moz keyframes sh
  • VS2008和ClearCase:打开解决方案无缘无故地请求结帐

    我有一个小问题导致我的自动化构建失败 当我们打开最近从 VS2005 转换为 VS2008 的解决方案时 VS 通过 ClearCase 请求我们签出该解决方案文件 如果我们允许 那么无论如何它都不会进行任何更改 并且默认情况下 Clear
  • Grep 提取与给定模式匹配的单词

    我有一个日志文件 其中包含以下条目 INFO 2013 08 16 13 46 48 660 Index abc 12 insertTotal 11 INFO 2013 08 16 13 46 48 660 Index abcd 12 in
  • 如何在 Maven 中仅部署 zip 工件

    我使用下面的描述符和 pom 文件在 Maven 中完成了一些 zip 打包 但在 Maven 中 默认情况下它会在目标文件夹中创建 jar 和 zip 现在我只想在使用deploy deploy file插件的地方部署zip内容 但它没有
  • 基于类的视图中的模拟表单不使用 MagicMock

    我一直在努力模拟表单类以在基于类的视图中替换它的实例 但看起来是这样 因为表单位于类属性中 所以会发生这种情况before我用我的模拟替换了表单类 例证 应用程序 views py from app forms import SomeFor
  • AutomaticMigrationsEnabled 是假还是真?

    在EF项目中 是否有设置的最佳实践自动迁移已启用 更多声明 在我们的团队中 修改模型后 我们通常在包管理器控制台中运行 add migration 和 update database 命令 当其他开发人员运行该项目时会出现此错误 无法删除数
  • 如何自定义CK-Editor的工具菜单?

    我想更改 ckeditor 上的工具菜单选项 例如 我删除了其中一些我不需要使用的内容 我怎样才能做到这一点 有一个配置设置允许您设置将显示哪些按钮 您只需创建自己的工具栏布局 我已经包含了默认的完整工具栏代码 您可以删除不想出现的按钮 最
  • 无法使替换参考“永久”

    我必须将两个分支合并到另一个分支中 并且我想捕获 记录这段历史 首先我尝试了章鱼合并 但分支差异太大 Git 拒绝执行合并 需要明确的是 涉及三个分支 而不是两个 作为替代方案 我从每个分支中检查了所需的文件 对每组文件进行三向比较 然后提
  • 如何在 Gnuplot 中用线条绘制不同块的数据?

    我有一个包含 x y 值块的数据文件 每个块包含 16 条带有 x y 对的线 每个块代表不同时间的这些位置 http pastebin com 0teRrfRU http pastebin com 0teRrfRU 我想绘制特定粒子的轨迹
  • 类型“GroupExpandedEventArgs”已包含“P0”Xamarin Android Java Bindings for Thoughtbot ExpandableRecyclerView 的定义

    我正在尝试为此库创建 Xamarin Android 绑定 https github com thoughtbot expandable recycler view https github com thoughtbot expandabl
  • 更改 GitHub 帐户用户名

    我想更改我的 GitHub 帐户的用户名 但我找不到如何操作 这有可能吗 澄清一下 我不是在谈论 git 存储库中的 user name 参数 而是实际 GitHub 帐户的用户名 是的 这是可能的 但首先读到 当我更改用户名时会发生什么
  • 如何在 ember.js 中对视图进行单元测试?

    我们正在学习 Ember js 我们所有的开发都是 TDD 并且希望 Ember js 也不例外 我们拥有构建测试驱动的 Backbone js 应用程序的经验 因此我们熟悉使用 Jasmine 或 Mocha Chai 测试前端代码 在弄
  • python 中的快速 ping 扫描

    因此 我尝试使用 python 获得与使用 bash 脚本类似的结果 bash 脚本的代码 bin bash for ip in seq 1 254 do ping c 1 10 10 10 ip grep bytes from cut d