我正在尝试使用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进行响应测试,该怎么做?
答案 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()