#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"
вызовов и