【问题标题】:Execute a command on remote machine using telnet in a single line在单行中使用 telnet 在远程机器上执行命令
【发布时间】:2012-04-23 12:40:29
【问题描述】:

我想在远程机器上使用 telnet as 执行命令,

telnet x.x.x.x 命令或类似命令

我想将它作为 Python ( subprocess ) 脚本的一部分包含在内,因此需要将它放在一行中。或者,还有其他方法可以做到这一点吗?

感谢任何帮助。

谢谢。

【问题讨论】:

  • 这个有用吗?要将数据发送到进程的标准输入,您需要使用标准输入 = PIPE 创建 Popen 对象。 docs.python.org/library/subprocess.html#popen-objects
  • 是的,您可以同时使用stdinstdout 与 Telnet 二进制文件进行通信。但是,为什么不按照我的建议直接使用 telnetlib 呢?

标签: python command telnet


【解决方案1】:

与其依赖subprocess,不如试试Python内置的telnetlib

文档中提供了一个几乎完全符合您要求的完整示例:http://docs.python.org/library/telnetlib.html#telnet-example

我个人还想看看目标系统上是否可以使用 SSH。您不仅可以使用安全连接,还可以设置 SSH 密钥并使用 SSH 的内置支持来执行单个命令(例如 ssh user@example.com ls -l)。

【讨论】:

  • 我们是否能够使用您在此处建议的 telnetlib 在远程服务器上运行所有类型的命令?
【解决方案2】:
#!/bin/sh
empty -f -i in -o out telnet foo.bar.com
empty -w -i out -o in "ogin:" "luser\n"
empty -w -i out -o in "assword:" "TopSecret\n"
empty -s -o in "who am i\n"
empty -s -o in "exit\n"

http://empty.sourceforge.net/

【讨论】:

    【解决方案3】:

    也许this 解决方案会很有用,但如其中所述,如果您需要用户/密码身份验证,它将无法工作。

    为了跳过手动用户/密码验证,设置 ssh 密钥是可行的方法。这里有一个简短的解释:SSH to a server without password for Admin Ease

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 2013-06-06
      • 2011-12-18
      • 2017-08-13
      相关资源
      最近更新 更多