Paramiko exec_command зависает, когда вы SSH от любого пользователя, кроме root - PullRequest
0 голосов
/ 10 мая 2019

Итак, я написал небольшой код на Python, который зависает на шаге exec_command при использовании support user, и то же самое отлично работает при использовании root user

У меня нет проблем с запуском скрипта из терминала при входе в систему в качестве пользователя поддержки. Это то, что я не могу понять, почему зависает paramiko.exec_command.

Я попытался запустить скрипт из Windows 10 с запущенным Python Python 3.6.6 | Anaconda custom (64-bit) | (по умолчанию, 28 июня 2018 г., 11:27:44) [MSC v.1900 64 бит (AMD64)] на win32, а также на Ubuntu 19.04 с Python 3.7.3 (по умолчанию, 27 марта 2019 г., 22:11:17) [GCC 7.3.0] :: Anaconda, Inc. на linux

Машина, которую я пытаюсь использовать в ssh, работает под управлением CentOS версии 6.9 (финальная версия). Вот ls -ltr на этой машине

-rwxr-xr-x. 1 support support 10430264 May 10 12:13 port_check

Я попытался добавить и удалить sudo из команд, выполняемых через SSH, а также комментировать ssh.invoke_shell ()

import sys
import paramiko


def pew_print(some_input):
    try:
        some_input = some_input.decode("utf-8")
    except Exception as errors:
        print("Errors : {0}".format(errors))
        pass
    some_input = str(some_input)
    sys.stdout.write(some_input)
    sys.stdout.write("\n")
    sys.stdout.flush()


def ssh_command_output(ssh, command_string):

    # ssh.invoke_shell()
    stdin, stdout, stderr = ssh.exec_command(command_string, timeout=90)
    pew_print(stdout.read())


def something(ip_address):

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=ip_address, port=22, username="support", password="pass")
    # ssh_command_output(ssh, "sudo chmod 755 /home/support/port_check")
    # ssh_command_output(ssh, "sudo /home/support/port_check")
    ssh_command_output(ssh, "ls -ltr")

Я ожидаю, что результат будет таким же при использовании support user, когда он использует root user

EDIT:

sudo для пользователя поддержки не требуется пароль, и я попытался просто выполнить ls -ltr от пользователя поддержки, и это также зависает.

Я могу нормально ssh support@host и затем выполнить все вышеуказанные команды

1 Ответ

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

Так что после копания немного о проблеме. Я обнаружил, что удаленное выполнение не разрешено, и поэтому закрыл этот вопрос.

...