【发布时间】:2018-12-11 21:41:56
【问题描述】:
这是我的代码 -
import subprocess
import sys
HOST="xyz3511.uhc.com"
# Ports are handled in ~/.ssh/config since we use OpenSSH
COMMAND="uptime"
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if result == []:
error = ssh.stderr.readlines()
print (sys.stderr, "ERROR: %s" % error)
else:
print (result)
这是我得到的错误-
错误: [b"'ssh' 未被识别为内部或外部命令,\r\n", b'可运行的程序或批处理文件。\r\n']。
不知道我在这里做错了什么。另外,我没有提到任何端口。我想要的只是使用子进程并连接到远程服务器,执行一个简单的命令,如ls。 Python 版本是 3.x。
【问题讨论】:
-
你能在终端上显式地 ssh 吗?我的意思是不在 Python 程序中
-
您是在没有安装 SSH 客户端(名称为
ssh)的 Windows 机器上执行此操作吗? -
是的,我在 windows 中使用这个程序
-
@alfe 我在安装了 SSH 的 Windows 机器上遇到了同样的错误(ssh 命令在 cmd 中有效,但在子进程中无效)
-
确保找到 ssh 命令。要么相应地设置你的 PATH 变量的 Windows 等效项,要么只使用
ssh可执行文件的完整路径而不是ssh,即。 e.类似C:\some\path\to\ssh.
标签: python python-3.x ssh subprocess