Итак, я написал небольшой код на 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
и затем выполнить все вышеуказанные команды