在Paramiko中运行交互式命令

发布于 2021-01-29 15:06:10

我正在尝试通过paramiko运行交互式命令。该cmd执行尝试提示输入密码,但是我不知道如何通过paramiko的exec_command提供密码,并且执行挂起。如果cmd执行期望交互输入,是否可以将值发送到终端?

ssh = paramiko.SSHClient()
ssh.connect(server, username=username, password=password)
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("psql -U factory -d factory -f /tmp/data.sql")

有谁知道如何解决?谢谢。

关注者
0
被浏览
85
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    完整的paramiko发行版附带了很多很好的演示

    在demos子目录中,demo.pyinteractive.py有完整的交互式TTY示例,这可能对您的情况有些过分。

    在您的示例中,上述ssh_stdin行为就像一个标准的Python文件对象,ssh_stdin.write因此只要通道仍然打开,它就应该起作用。

    我从不需要写stdin,但是文档建议在命令退出后立即关闭通道,因此使用标准stdin.write方法发送密码可能无效。通道本身上有较低级别的paramiko命令,可为您提供更多控制权-
    了解如何SSHClient.exec_command对所有详细信息实施该方法。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看