我正在尝试通过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")

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

最佳答案

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

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

在上面的示例中,ssh_stdin就像一个标准的Python文件对象,因此只要 channel 仍处于打开状态,ssh_stdin.write就应该起作用。

我从不需要写stdin,但是文档建议在命令退出后立即关闭 channel ,因此使用标准stdin.write方法发送密码可能无效。 channel 本身上有一些较低级别的paramiko命令,它们可为您提供更多控制权-有关所有gory细节,请参见 SSHClient.exec_command 方法的实现方式。

关于python - 在Paramiko中运行交互式命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/373639/

10-12 23:41