Выполнение команды с удаленного сервера на другой удаленный сервер с помощью Paramiko - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь подключиться к указанному c центральному серверу, который настроил соединение без пароля со всеми другими серверами, сервер, на котором я сейчас работаю, не имеет доступа к тем, на которых я хочу запускать команды. Поэтому я пытаюсь подключиться к центральному серверу и оттуда ssh на другие серверы, которые мне нужны для запуска команд. Когда я запускаю это после выполнения ssh, командная программа зависает и не позволяет выполнять команды на конечном удаленном сервере. В этом случае, скажем, я хочу запустить ifconfig на конечном сервере 'host.name'.

def get_host_info_linux(self,host,db_engine):
    #Create ssh client from paramiko library
    client = paramiko.SSHClient()

    try:
        # Connect to remote host
        #logger.info(username_pass)
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        client.connect(hostname='tunel host name', username=f'{db_engine}')
        #this command is to do ssh into the server I want to execute commands
        ssh_cmd = f'ssh {host.name}'

        ssh_std = client.exec_command(ssh_cmd)
        if (ssh_std[2].readlines() == []):+

            logger.debug(ssh_std[1].readlines()[0])

        else:
            logger.error(ssh_std[2].readlines())

      client.exe_command('ifconfig')

    except Exception as e:
        logging.error(e)
    finally:
        client.close()

1 Ответ

0 голосов
/ 21 апреля 2020
  • Обычно для выполнения команд на сервере, к которому вы можете подключиться только через другой сервер S SH, следует использовать переадресацию портов:
    Вложенный S SH с использованием Python Paramiko
  • Но если я правильно понял, вы не хотите проходить аутентификацию с локального компьютера, так как у вас установлена ​​аутентификация с хоста перехода (у вас есть закрытый ключ, сохраненный при переходе host?) В этом случае вам понадобится:
    Выполнение (под) команд во вторичной оболочке / команда на S SH сервере в Python Paramiko
  • Хотя вместо подачи команд на ssh через перенаправленный ввод вы также можете использовать командную строку ssh в качестве более стандартизированного интерфейса:

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