首页 > 解决方案 > 使用子进程 POpen 在 SSH 后使用 STDIN 将命令写入服务器

问题描述

我认为我对子进程 stdin.write() 和 stdout.read() 有一些基本的误解

我正在尝试从 Windows 服务器连接到 linux 服务器,创建一个目录并通常运行一些其他命令以移动一些数据。我的代码在下面但是做 stdin.write() 似乎没有做任何事情。stdout.read() 返回通过 SSH 连接到服务器后自动显示在控制台窗口上的第一行、上次登录日期、服务器名称等。我在哪里出错了?

谢谢!

ssh = subprocess.Popen([plinkExe, "-ssh",
                    server,
                    "-l", username, 
                    "-pw", password
                    ],
                       shell=False,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE,
                      stdin=subprocess.PIPE)


ssh.stdin.write(b"mkdir xxx")
print(ssh.stdout.readline().decode("utf-8"))
ssh.stdin.write(b"pwd\n")
print(ssh.stdout.readline().decode("utf-8"))
ssh.kill()

标签: pythonsshsubprocess

解决方案


推荐阅读