【发布时间】:2015-10-01 20:14:51
【问题描述】:
我正在运行一个远程登录到terminal server 的脚本。有时脚本在一个实例已经运行时启动,这会导致已经运行的脚本失败并显示
EOFError: telnet connection closed
在我尝试打开与telnetlib 的连接之前,是否有一种快速简便的pythonic 方法来检查客户端计算机上是否已在使用所需的套接字?
解决方案:
我想避免进行子进程调用,但由于我不控制客户端计算机上的软件,并且其他程序可能使用相同的套接字,所以下面的文件锁定建议(一个好主意)对我不起作用。我最终使用了 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
【问题讨论】:
标签: python windows sockets netstat terminal-server