У меня есть сценарий bash, которому необходимо подключиться к другому серверу для части его выполнения. Я пробовал многие стандартные инструкции и синтаксисы для выполнения команд s sh, но с небольшим прогрессом.
На удаленном сервере мне нужно получить сценарий оболочки, содержащий несколько параметров env для некоторого программного обеспечения. Затем один из этих параметров используется в пути к файлу, чтобы указать на исполняемый файл, который содержит функцию '-lprojects', которая может перечислить проекты для программного обеспечения на этом сервере.
Я проверил, что выполнение команд на сам сервер работает несколько раз. Моя проблема заключается в том, что я пытаюсь запустить те же команды через S SH. Если я использую подход, при котором я использую переменную env для пути к файлу, он показывает, что переменная имеет значение null в пути к файлу, что дает ошибку файл / каталог не найден. Если я жестко запрограммирую путь к файлу так, чтобы он указывал на исполняемый файл, я получаю сообщение об ошибке, в котором говорится, что сценарий оболочки не получен (который, как я предполагаю, нужен для других функций и API для исполняемого файла, чтобы показать его функцию -lprojects)
Вот как выглядит код:
ssh remote.server 'source /filepath/remotescript.sh'
filelist=$(ssh remote.server $REMOTEVARIABLE'/bin/executable -lprojects')
echo ${filelist[@]}
for file in $filelist
do
echo $file
ssh SERVER2 awk 'something' /filepath/"$file"/somefile.txt | sed 'something' >> filepath/values.csv;
done
Как видите, мне также нужно l oop через содержимое вывода -lprojects на удаленном сервере, выполните некоторые awk и sed в файлах для извлечения желаемого текста (это работает), но затем мне нужно записать это обратно в файл values.csv клиента (локального сервера). Это более общий c, так как мне придется сделать это для нескольких серверов, но все они должны записывать в один и тот же файл .csv. Для простоты вы можете рассматривать это как случай с одним удаленным сервером, так как жизненно важно, чтобы он работал по крайней мере для одного сейчас в начале.
Обратите внимание, что я также пробовал что-то вроде:
ssh remote.server << EOF
'source /filepath/remotescript.sh'
filelist=$(ssh remote.server $REMOTEVARIABLE'/bin/executable -lprojects')
EOF
Но с аналогичными результатами. Также поместите одинарные кавычки в список файлов как до, так и после удаленной переменной, et c.
Как мне go правильно это сделать?