Запуск сценария базы данных с Paramiko завершается неудачно с кодом завершения - PullRequest
1 голос
/ 28 мая 2019

Выходной файл создается до того, как станут доступны результаты базы данных.

Передача простой команды os работает нормально:

# command = "whoami > result.txt"

работает отлично.Я получу свое имя пользователя при открытии файла result.txt.Проблема в том, что база данных возвращает результат.Он получается пустым, даже если есть данные, возвращенные из фактического запроса

import paramiko


def get_report(command):
    # reference: /8165268/python-paramiko-problema-pri-zakrytii-soedineniya.
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect('server123', username='username', password='password')

    stdin, stdout, stderr = client.exec_command(command)
    exit_status = stdout.channel.recv_exit_status()

    if exit_status == 0:
        print("File processed")
    else:
        print("Error", exit_status)
    client.close()

command = "sql_query.script > result.txt"
get_report(command=command)

Я ожидаю получить набор данных first_name, last_name и location, но вместо этого я получаю сообщение об ошибке 108.

1 Ответ

0 голосов
/ 29 мая 2019

Если команда не работает, при выполнении с использованием Paramiko отладьте ее, прочитав вывод ошибок.

Используйте stderr.readlines() для этого.


Если та же команда работает в обычной оболочке, но не в Paramiko, проблема обычно связана с другой средой, используемой каналом exec SSH, который используется SSHClient.exec_command. См:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...