Как я могу установить переменные env в сеансе ssh и запустить команды оболочки?

#python #shell #ssh #environment-variables

#python #оболочка #ssh #переменные среды

Вопрос:

Мне нужно :

  1. ssh на удаленный сервер (в настоящее время я использую paramiko.SSHClient)
  2. Для сеанса установите переменные env, необходимые для запуска набора последующих команд / сценариев
  3. Запустите команды / скрипты.

Мои настройки env являются временными только для этого сеанса, поэтому я думаю, что изменение ~/.ssh/environment не является вариантом. <<< Пожалуйста, исправьте, если я ошибаюсь.

Также сервер защищен паролем, поэтому я предполагаю, что подпроцесс.О Popen (ssh) также не может быть и речи? Опять же, я все еще пытаюсь что-то сделать, пожалуйста, поправьте меня.

Я безуспешно пытался:

 a. ssh.exec_command(env_export_commands)
b. ssh.exec_command(command=dummy,environment=env_export_commands_dictionary).
  

Но после любого из вышеперечисленных действий я все еще вижу старые значения в ‘env’.
Любые указатели на то, чего мне не хватает, высоко ценятся.

Комментарии:

1. Узнал, что каждая команда exec_command выполняется в другой оболочке, поэтому настройка и проверка env (или любой другой команды, которая использует вновь установленные переменные env) должны выполняться в одной команде exec_command command_set = «export env1=value1; env;» script_using_env stdin, stdout, stderr = ssh.exec_command(command_set)

Ответ №1:

Узнал, что каждая команда exec_command выполняется в другой оболочке, поэтому настройка и проверка env (или любой другой команды, которая использует вновь установленные переменные env) должны выполняться в одной exec_command

то есть :

  command_set = "export env1=value1; env;"   script_using_env 

 stdin, stdout, stderr = ssh.exec_command(command_set)