python - 在 Paramiko 中运行交互式命令

标签 python ssh paramiko

我正在尝试通过 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 就应该可以工作。

我从来不需要写入标准输入,但文档建议一旦命令退出, channel 就会关闭,所以使用标准的 stdin.write 方法可能会发送密码不会工作。 channel 本身有较低级别的 paramiko 命令,可以让您更好地控制 - 查看 SSHClient.exec_command方法已针对所有血淋淋的细节实现。

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

相关文章:

python - 通过 SSH 命令从 Mac OS X 计算机启动远程脚本

python - 在 Paramiko 中,如何确定是否通过 SSH key 或密码成功连接?

python - 如何与 Paramiko 的交互式 shell session 进行交互?

python - 使用python连接远程服务器,添加代理

python - 将 yaml 文件加载为 dict

python - 如何向类 View 添加逻辑

android从extends AsyncTask创建一个对象并将其发送到另一个 Activity

javascript - 有没有办法使用 Grunt.js 在 Windows 上的 git shell 中调用命令

python - Pandas:按组对前 N 行求和

python - 为什么单列会导致我的 SVM 花费一个小时?