【问题标题】:using Python to test telnet connections to servers使用 Python 测试与服务器的 telnet 连接
【发布时间】:2020-07-31 05:14:27
【问题描述】:

我正在尝试使用 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 的响应,我该怎么做?

【问题讨论】:

    标签: python telnet


    【解决方案1】:

    试试:

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

    【讨论】:

      【解决方案2】:

      您需要使用subprocess.Popen() 并使用生成的popen 对象的标准输入/标准输出流与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()
      

      可能就够了。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2018-12-25
        • 2013-02-17
        • 2016-08-04
        • 1970-01-01
        相关资源
        最近更新 更多