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

时间:2020-04-17 16:17:18

标签: python telnet

我正在尝试使用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+]和'quit'退出telnet提示符? 另外,如果我想使用“ GET /”对telnet进行响应测试,该怎么做?

2 个答案:

答案 0 :(得分:0)

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

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

import socket
s = socket.socket()
s.connect(('localhost', 80))
s.close()
如果连接失败,

将引发异常;如果您需要进行简单的ping / pong,

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

可能就够了。

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

答案 1 :(得分:0)

尝试:

proc = subprocess.Popen(['lsof', '-iTCP', -'sTCP:LISTEN', '-n' ,'-P'], stdout=subprocess.PIPE)
tmp = proc.stdout.read()