python - 交互式 shell paramiko 如何像 exec_command 一样读取输入

标签 python paramiko

在没有交互式 shell 的情况下使用 paramiko exec_command 时,很容易获得输出。

但是我需要使用交互式 shell,读取单个命令的输出似乎很痛苦。我找不到演示或任何示例。

我尝试使用类似的东西:Implement an interactive shell over ssh in Python using Paramiko?

但它的状态真的很糟糕。

最佳答案

你不必为此使用 paramiko

只需使用 paramiko 打开无密码 ssh 连接,然后使用 subporcess 模块实现您的方法。

例如:

def run_shell_remote_command(remote_host, remote_cmd):
        p = subprocess.Popen(['ssh', '-nx', remote_host, remote_cmd], stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE)
        stdout, stderr = p.communicate()
        if p.returncode != 0:
            raise RuntimeError("%r failed, status code %s stdout %r stderr %r" % (
                remote_cmd, p.returncode, stdout, stderr))
        return stdout.strip()  # This is the stdout from the shell command

关于python - 交互式 shell paramiko 如何像 exec_command 一样读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988385/

相关文章:

python - 如何在s3 parquet中编写json文件

python - 密码生成器的字符顺序如何随机化

python - 使用 Django Allauth 跳过初始登录页面

python - Paramiko exec_command 的实时输出

python - 如何增加 Paramiko SSH 客户端上的向后滚动缓冲区?

python - 如何在 docker 中从 python 连接到远程 Spark 集群

ssh - paramiko.ssh_exception.SSHException:TCP转发请求被拒绝

python - 在 Python 中换行

python - 覆盆子上的 SIFT SURF

python-2.7 - 如何将私钥作为字符串提供给 paramiko 以进行 ssh 连接?