我们的服务器基础设施包含数百台服务器。所有这些服务器都通过一个密钥服务器进行访问。我们集中管理身份验证。
因此我尝试在我们的密钥服务器中使用这个 bash 命令来列出组中的所有用户:
adquery group GROUP_NAME -a
我在以下 Python 脚本中使用了这个结果来读取输出并将其放入名为的变量中users
:
users = os.popen("adquery group GROUP_NAME -a").read()
我遇到的问题是,当脚本运行两三次时,它工作正常,但突然命令输出为空。当我尝试在 Linux 提示符下运行相同的命令时,它仍然失败。但过了一段时间。当我再次尝试运行它时,它就正常工作了。目前我甚至不知道这是如何发生的。但当这种情况发生时,任何有权访问该服务器的人都无法像我一样获得结果。
注意 - 更新. 还有一件事要补充。
当我尝试查询其他内容时
adquery user USERNAME -a
它们仍然有效。它给出的输出没有任何问题。但我之前提到的命令仍然失败,没有错误,没有输出。
有人可以解释一下为什么会发生这种情况吗?
答案1
这听起来像是典型的端口耗尽问题。您在较旧的操作系统上多次运行此命令,该操作系统的可用端口较少,为 1024-5000。
在 Windows 机器上运行“netstat -ano”。查找到具有多个端口的同一 IP 地址的连接,如果其中许多处于“TIME_WAIT”状态,则表明存在另一个迹象。
另外,使用任务管理器检查是否出现内存利用率过高的情况,这通常与端口耗尽同时出现。