使用Python测试与服务器的telnet连接

问题描述 投票:0回答:1

我正在尝试使用telnet检查与服务器的服务连接。这是我使用的代码:

p = subprocess.run("telnet localhost 80", shell=True, universal_newlines=True, stdout=subprocess.PIPE)
print(p.stdout)

如果运行此命令,则响应为空,似乎telnet在后台等待超时,直到按ctrl+c

如果我运行以下代码:

p = subprocess.run("telnet localhost 80", shell=True, universal_newlines=True)

响应如下:

Trying ::1...
Connected to localhost.
Escape character is '^]'.

如果我想使用此脚本来测试与服务器的连接,如何通过ctrl+]和“退出”退出telnet提示符?另外,如果我想使用“ GET /”对telnet测试响应,该怎么办?

python telnet
1个回答
0
投票

您需要使用subprocess.Popen()并使用生成的popen对象的stdin / stdout流与telnet进程进行通信。

但是–您实际上需要使用telnet吗?如果您只需要知道某些东西是否可连接,

import socket
s = socket.socket()
s.connect(('localhost', 80))
s.close()

如果连接失败,将引发异常;如果您需要进行简单的乒乓球,

import socket
s = socket.socket()
s.connect(('localhost', 80))
s.sendall(b'Hello? Are you there?\n')
print(s.recv(8192))
s.close()

足够了。

(不过,您可能需要考虑添加超时等等。]


0
投票

尝试:

proc = subprocess.Popen(['lsof', '-iTCP', -'sTCP:LISTEN', '-n' ,'-P'], stdout=subprocess.PIPE)
tmp = proc.stdout.read()
© www.soinside.com 2019 - 2024. All rights reserved.