How can you get the SSH return code using Paramiko?

client = paramiko.SSHClient()
stdin, stdout, stderr = client.exec_command(command)

Is there any way to get the command return code?

It's hard to parse all stdout/stderr and know whether the command finished successfully or not.

87
задан Charlie 30 March 2014 в 01:44
поделиться

1 ответ

SSHClient — это простой класс-оболочка для низкоуровневой функциональности Paramiko. Документация по API перечисляет метод recv_exit_status() в классе Channel.

Очень простой демонстрационный скрипт:

$ cat sshtest.py
import paramiko
import getpass

pw = getpass.getpass()

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.WarningPolicy())
client.connect('127.0.0.1', password=pw)

while True:
    cmd = raw_input("Command to run: ")
    if cmd == "":
        break
    chan = client.get_transport().open_session()
    print "running '%s'" % cmd
    chan.exec_command(cmd)
    print "exit status: %s" % chan.recv_exit_status()

client.close()

$ python sshtest.py
Password: 
Command to run: true
running 'true'
exit status: 0
Command to run: false
running 'false'
exit status: 1
Command to run: 
$
48
ответ дан 24 November 2019 в 07:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: