Скрипт Bash выполняет функцию на удаленном сервере и записывает в файл шаблона локально

#bash #function #templates #remote-server

#удар #функция #шаблоны #удаленный сервер

Вопрос:

Я хочу выполнить функцию на удаленном сервере и выполнить некоторые команды linux (getValueOnRemoteServer). Я сохраняю значение переменной порта с помощью функции getValueOnRemoteServer.

И значение переменной порта я записываю в файл шаблона, выводимый локально.

 # get value on remote server getValueOnRemoteServer () {  declare -x port  port=$(cat $2)  touch $1  # do some linux commands }  # execute function on remote server remote_function() {  ssh root@$1 "`declare -f getValueOnRemoteServer`; getValueOnRemoteServer $file $path"  }  # generate a template file generate_file () { cat lt;lt; EOF Port is $1 EOF }   # MAIN path=/etc/toto file=tata  remote_function "server1" generate_file "$port" gt; output remote_function "server2" generate_file "$port" gt; output2  

на удаленном сервере1

Я хочу получить значение /etc/toto 3838837

и запись в локальный файл Порт вывода 1 3838837

Проблема в том, что когда я выполняю скрипт, переменный порт пуст

 Port is  

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

1. в чем проблема? выполняется ли сценарий? генерирует ли это (синтаксическую) ошибку? работает ли он, но не дает желаемых результатов? пожалуйста, обновите вопрос с более подробной информацией о том, где у вас возникли проблемы

2. спасибо за ваш ответ, я отредактировал вопрос.

3. предполагая, что ваша функция создается и выполняется должным образом на удаленном хосте, команда port=$(cat $2) выполняется на удаленном хосте, поэтому port определена на удаленном хосте , но не на локальном хосте; вам нужно будет передать port значение с удаленного хоста обратно на локальный (например, remote_host: echo "$port" , local_host: remote_port=$(ssh ...) )

4. Я пытаюсь, но получаю неправильную строку, это не то, что я хочу. потому что я должен получить значение переменной в два раза больше. Может быть, вы могли бы написать всю функцию целиком? Искренне

5. рассмотрите возможность обновления вопроса более подробной информацией, например, полным набором выходных данных из remote_function "server1" remote_function "server2" вызовов и