Python for 循环变慢并最终挂起

2024-02-24

我对 Python 完全陌生(截至半小时前),并尝试编写一个简单的脚本来枚举 SMTP 服务器上的用户。

用户文件是一个简单的用户名列表(每行一个)。

该脚本运行良好,但随着循环的每次迭代,它都会变慢,直到循环 14 左右,它似乎完全挂起。没有错误 - 我必须 ^c。

有人能解释一下这个问题吗?

TIA, Tom

#!/usr/bin/python

import socket
import sys

if len(sys.argv) != 2:
        print "Usage: vrfy.py <username file>"
        sys.exit(0)

#open user file
file=open(sys.argv[1], 'r')
users=[x.strip() for x in file.readlines()]
file.close

#Just for debugging
print users

# Create a Socket
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect to the Server
connect=s.connect(('192.168.13.222',25))

for x in users:
        # VRFY a user
        s.send('VRFY ' + x + '\r\n')
        result=s.recv(1024)
        print result

# Close the socket
s.close()

您的 SMTP 服务器很可能正在对您的客户端连接进行缓送。这是针对失控客户端或提交大量“垃圾”命令的客户端的防御。来自 Postfix smtpd 的联机帮助页:

   smtpd_junk_command_limit (normal: 100, stress: 1)
          The number of junk commands (NOOP, VRFY, ETRN or  RSET)  that  a
          remote  SMTP  client  can  send  before  the Postfix SMTP server
          starts to increment the error counter with each junk command.

smtpd 守护进程将在看到一定数量的垃圾后在回复之前插入 1 秒的延迟。如果您拥有相关 smtp 服务器的 root 访问权限,请尝试 strace 以查看服务器是否发出 nanosleep 系统调用。

这是针对我的本地服务器运行脚本的跟踪记录。 100 个 VRFY 命令后,它开始在命令之间休眠。您的服务器可能有大约 15 个垃圾命令的下限:

nanosleep({1, 0}, 0x7fffda9a67a0)       = 0
poll([{fd=9, events=POLLOUT}], 1, 300000) = 1 ([{fd=9, revents=POLLOUT}])
write(9, "252 2.0.0 pat\r\n", 15)       = 15
poll([{fd=9, events=POLLIN}], 1, 300000) = 1 ([{fd=9, revents=POLLIN}])
read(9, "VRFY pat\r\n", 4096)           = 10
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python for 循环变慢并最终挂起 的相关文章

  • 如何手动计算分类交叉熵?

    当我手动计算二元交叉熵时 我应用 sigmoid 来获取概率 然后使用交叉熵公式并平均结果 logits tf constant 1 1 0 1 2 labels tf constant 0 0 1 1 1 probs tf nn sigm
  • 使用特定的类/函数预加载 Jupyter Notebook

    我想预加载一个笔记本 其中包含我在另一个文件中定义的特定类 函数 更具体地说 我想用 python 来做到这一点 比如加载一个配置文件 包含所有相关的类 函数 目前 我正在使用 python 生成笔记本并在服务器上自动启动它们 因为不同的
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 处理 Python 行为测试框架中的异常

    我一直在考虑从鼻子转向行为测试 摩卡 柴等已经宠坏了我 到目前为止一切都很好 但除了以下之外 我似乎无法找出任何测试异常的方法 then It throws a KeyError exception def step impl contex
  • Python getstatusoutput 替换不返回完整输出

    我发现了这个很棒的替代品getstatusoutput Python 2 中的函数在 Unix 和 Windows 上同样有效 不过我觉得这个方法有问题output被构建 它只返回输出的最后一行 但我不明白为什么 任何帮助都是极好的 def
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 如何在 Python 中解析和比较 ISO 8601 持续时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 Python v2 库 它允许我解析和比较 ISO 8601 持续时间may处于不同单
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • 为什么 Pickle 协议 4 中的 Pickle 文件是协议 3 中的两倍,而速度却没有任何提升?

    我正在测试 Python 3 4 我注意到 pickle 模块有一个新协议 因此 我对 2 个协议进行了基准测试 def test1 pickle3 open pickle3 wb for i in range 1000000 pickle
  • 如何解决 PDFBox 没有 unicode 映射错误?

    我有一个现有的 PDF 文件 我想使用 python 脚本将其转换为 Excel 文件 目前正在使用PDFBox 但是存在多个类似以下错误 org apache pdfbox pdmodel font PDType0Font toUnico
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重

随机推荐

  • 由于 WordPress,无法访问我的文件夹 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我已经在我的网站上安装了 WordPress 并且正在使用永久链接 但是我网站的主根目录中有一个名为 x 的文件夹 当我键入时 我现在无法访问它htt
  • 使用 TFS Git 进行分叉

    我现在在一个使用 TFS 和 Git 的项目中 我意识到我将无法再分叉了 所以我想我会问你们对此解决方案的看法 我遇到的问题是我有一个 基础 项目 它将被我们拥有的每个客户重复使用 但每个客户都会有一定程度的修改 大约5 10 我计划将项目
  • ACTIV HDL - VHDL -“信号无法合成,同步描述错误”

    我在 Xilinx 中综合此代码时遇到错误 这个错误是 信号 Z 1 无法合成 同步描述错误 entity uk3 is port rst in BIT C in INTEGER clk in BIT S out INTEGER end u
  • 如何强制作曲家重新安装库?

    我正在使用 ZF2 骨架应用程序 它有一个 gitignore 可以防止外部库提交到 git 在调试时 我喜欢在库的源代码中到处改变一些东西 以了解事情是如何工作的 如果这些是版本控制的 那么将它们恢复到原始状态将非常容易 如何强制 Com
  • JS/jQuery - 获取元素的类型

    如果为了论证我将一个类应用于 p and an a 然后我想确定它是否是 a or a a a p p 已经点击了 有什么办法吗 预期用途示例 selector click function element this whatElement
  • 有没有 Android 视图生命周期的图形表示(状态图)? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们都知道AndroidActivity的生命周期 http developer android com
  • C 中标量类型和聚合类型有什么区别?

    我读过一本书 叫 Pointers On C 在那本书中 有一种类型称为标量类型 我知道算术类型和指针类型统称为标量类型 但我想知道标量类型和聚合类型有什么区别以及什么场合使用它们 C11 6 2 5 类型 p21 Arithmetic t
  • 禁用 UITextField 的简单方法?

    有没有一种简单的方法来禁用UITextField在代码中 我的应用程序有 12 个UITextField默认情况下都是打开的 但是当我的段控制中检测到更改时 我想禁用一些UITextField取决于用户选择的细分 只需知道如何禁用它或使其不
  • Flutter:没有为该类型定义 getter

    我被页面路由困住了 这是 main dart 中的代码 import package test routes router gr dart import package flutter material dart import packag
  • 删除 Android 导航和顶部栏,

    我正在尝试在已取得 root 权限的 Android 设备上实现 Kiosk 应用程序 并且我需要完全禁用导航和状态栏 这些命令在 adb shell 中工作 禁用 service call activity 42 s16 com andr
  • 获取android中已安装的应用程序列表

    我正在尝试为 Android 开发一个应用程序启动器应用程序 我刚开始 但这里有一个问题 如何获取 Android 中所有已安装应用程序的列表 在您的活动中使用这些方法来获取已安装应用程序的列表 private ArrayList
  • 为什么 JavaScript: new Date(year, Month, 0).getDate() 返回该月的天数?

    我知道这个小小的 JavaScript 代码 var whatever new Date year month 0 getDate 返回特定年份的特定月份的天数 但我似乎不明白其背后的逻辑 在我们提到年份和月份之后 那个零到底在做什么 请解
  • Ruby on Rails 移动应用程序

    我正在尝试开发一个 Ruby on Rails 应用程序 它将检测客户端 即连接到服务器的移动设备 浏览器 并呈现适当的布局 我尝试使用以下链接 但仍然无法连接 有什么建议 http www arctickiwi com blog mobi
  • 我如何在 spring security acl 中检查我的对象权限而不是使用 hasPermission 注释

    有没有办法直接从我的代码检查我的类对象权限 而不是使用注释模型 PostAuthorize hasPermission returnObject WRITE public BaseData getSingle Long id 假设您打算使用
  • CLOB 中是否保留转义序列?

    我们使用Java和Oracle进行开发 我在 Oracle 数据库中有一个表 其中有一个 CLOB 列 某些 XYZ 应用程序会在此列中转储文本文件 文本文件有多行 通过 Java 应用程序读取相同的 CLOB 文件时 转义序列 换行符等
  • 创建视图实例时 Backbone.js 不是构造函数错误

    我是backbone js 的新用户 正在测试如何使用它 最近几天我正在测试如何使用路由通过集合更改视图数据 在当前情况下 我遇到了一个问题 当我尝试在 router js 中创建 ScheduleView 实例时 控制台会记录以下错误消息
  • 为什么 Docker 服务停止了?

    我将 Ubuntu 作为 Windows 10 上的子系统运行 我刚刚按照以下步骤在 Linux 上安装 Docker https docs docker com install linux docker ce ubuntu https d
  • Cucumber 运行程序类的 Intellij IDEA 运行配置

    我是 Intellij IDEA 的新手 我有一个基于 POM 的 cucumber selenium 项目 我在其中为每个功能文件创建了 cucumber runner 类 在使用 Eclipse 时 我能够通过右键单击来执行这些运行程序
  • MySQL Git Bash winpty mysqldump stdout 不是 tty 并且 stdin 不是 tty

    请帮助使用 MySQL Git Bash winpty mysqldump winpty mysqldump 在 Git Bash 中不起作用 这里是错误的详细信息 Git Bash winpty mysqldump u root p em
  • Python for 循环变慢并最终挂起

    我对 Python 完全陌生 截至半小时前 并尝试编写一个简单的脚本来枚举 SMTP 服务器上的用户 用户文件是一个简单的用户名列表 每行一个 该脚本运行良好 但随着循环的每次迭代 它都会变慢 直到循环 14 左右 它似乎完全挂起 没有错误