![](/img/trans.png)
[英]Execute (sub)commands in secondary shell/command on SSH server in Python Paramiko
[英]Cannot execute shell command with redirected multiline input using Python Paramiko
我正在使用 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 服務器可以接受“exec”通道上的<< 'EOF'
shell 構造。
但這應該有效:
echo echo "Hello World" | sudo /bin/su -s /bin/bash - <diff username>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.