Есть ли способ выполнить rooth в оболочке ssh, установленной с python-paramiko? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть стороннее приложение (работает на собственной сборке Linux). Я могу управлять приложением через ssh-клиент. Для выполнения команд мне нужно запустить rooth (это необходимо и не может быть обойдено). Поэтому мой обычный рабочий процесс выглядит следующим образом:

  1. Подключение через шпатлевку
  2. запустить "sudo rooth", ввести пароль
  3. выполнить команды, которые я хочу

Теперь я пытаюсь автоматизировать некоторые процессы и включить некоторые команды в мое приложение. Стороннее приложение не имеет API, так что это мой единственный способ общения с ним. Я могу подключиться через python-paramiko без проблем. Но когда я запускаю команду после sudo rooth, она выполняется не внутри roothell, а в моей «базовой» оболочке, которая не может управлять приложением.

import paramiko

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=hostIP,username=user,password=passwd)

stdin,stdout,stderr = ssh_client.exec_command('cd')
stdin,stdout,stderr = ssh_client.exec_command('ls')
print(stdout.readlines())

stdin,stdout,stderr = ssh_client.exec_command('sudo rootsh')
stdin.write(superSecretPassword + '\n')
stdin,stdout,stderr = ssh_client.exec_command('cd')
stdin,stdout,stderr = ssh_client.exec_command('ls')
print(stdout.readlines())

оба отпечатка показывают одинаковый результат. При вводе одних и тех же команд в моей оболочке замазки я получаю разные результаты, так как после 'sudo rooth' 'cd' перенаправляет меня в корневой каталог, но без него нет.

Из моего понимания и тестирования корневая оболочка - это еще один сеанс в моей оболочке, поэтому моя программа не перенаправляет stdin и stdout на корневую оболочку.

Есть ли способ перенаправить мои входы и выходы в корневую оболочку или каким-либо другим способом, с помощью которого я мог бы войти в корневую оболочку через pyton?

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