1

我正在运行一个远程登录到terminal server. 有时脚本在一个实例已经运行时启动,这会导致已经运行的脚本失败

EOFError: telnet connection closed

pythonic在我尝试打开与telnetlib方法来检查客户端计算机上是否已在使用所需的套接字?

解决方案:

我想避免进行子进程调用,但由于我不控制客户端计算机上的软件,并且其他程序可能使用相同的套接字,所以下面的文件锁定建议(一个好主意)对我不起作用。我最终使用了 SSutrave 的建议。这是我在 Windows 7 中使用 netstat 的工作代码:

# make sure the socket is not already in use
try:
    netstat = subprocess.Popen(['netstat','-nao'],stdout=subprocess.PIPE)
except:
    raise ValueError("couldn't launch netstat to check sockets. exiting")
ports = netstat.communicate()[0]
if (ip + ':' + port) in ports:
    print 'socket ' + ip + ':' + port + ' in use on this computer already. exiting'
    return
4

2 回答 2

3

netstat | grep 'port number' | wc -l您可以通过在 python 中导入subprocess库来运行以下 linux 命令来检查打开的端口。

于 2015-10-01T20:56:11.797 回答
1

在您尝试连接到服务器之前,没有一种标准方法可以知道服务器是否有其他打开的连接。您必须询问它是否连接到检查它的服务器中的另一个服务,或者通过询问其他客户端,如果您知道所有这些客户端。

也就是说,telnet 服务器一次应该能够处理多个连接,因此连接的客户端是否更多应该无关紧要。

于 2015-10-01T20:33:25.323 回答