gpt4 book ai didi

python - 无法使用 Python Paramiko 执行带有重定向多行输入的 shell 命令

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:45 24 4
gpt4 key购买 nike

我正在使用 Paramiko 对盒子进行标准 SSH,运行命令,并将 STDOUT 显示到我的终端。由于 sudo 规则,我使用我的用户名 SSH 到计算机并运行 sudo /bin/su -s /bin/bash - <diff user account> 。在我的脚本中,我将以下命令传递给 Paramiko,但 STDOUT 未显示在我的屏幕上。我相信这是因为sudo命令正在打开一个新 shell,Paramiko 正在监视新 shell 上的 STDOUT。

当我登录到盒子并查看命令历史记录时,命令会运行。如何获取正在运行的命令的 STDOUT 以显示在终端上?

import paramiko

def sshCommand(hostname, port, username, command, key_filename='/home/<my username>/.ssh/id_rsa'):
sshClient = paramiko.SSHClient()
sshClient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshClient.connect(hostname=hostname, port=port, username=username, key_filename=key_filename)
stdin, stdout, stderr = sshClient.exec_command(command, get_pty=False)
output = stdout.readlines()
print(output)

sshCommand('<servername>', 22, '<my username>', """sudo /bin/su -s /bin/bash - <diff username> << \'EOF\'
echo "Hello World"
EOF
""")

最佳答案

我不认为 OpenSSH SSH 服务器可以接受 << 'EOF' “exec” channel 上的 shell 构造。

但这应该有效:

echo echo "Hello World" | sudo /bin/su -s /bin/bash - <diff username>

关于python - 无法使用 Python Paramiko 执行带有重定向多行输入的 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59326497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com