Мое требование - у меня будет набор команд, которые необходимо выполнить в текстовом файле. Мой скрипт Shell должен читать каждую команду, выполнять и сохранять результаты в отдельном файле.
Вот фрагмент, который выполняет вышеуказанное требование.
while read command
do
echo 'Command :' $command >> "$OUTPUT_FILE"
redirect_pos=`expr index "$command" '>>'`
if [ `expr index "$command" '>>'` != 0 ];then
redirect_fn "$redirect_pos" "$command";
else
$command
state=$?
if [ $state != 0 ];then
echo "command failed." >> "$OUTPUT_FILE"
else
echo "executed successfully." >> "$OUTPUT_FILE"
fi
fi
echo >> "$OUTPUT_FILE"
done < "$INPUT_FILE"
Пример Commands.txt
будет таким ...
tar -rvf /var/tmp/logs.tar -C /var/tmp/ Commands_log.txt
gzip /var/tmp/logs.tar
rm -f /var/tmp/list.txt
Это работает нормально для команд, которые должны быть выполнены на локальной машине. Но когда я пытаюсь выполнить следующие команды ssh, выполняется только 1-я команда.
Вот некоторые команды ssh, добавленные в мой текстовый файл.
ssh uname@hostname1 tar -rvf /var/tmp/logs.tar -C /var/tmp/ Commands_log.txt
ssh uname@hostname2 gzip /var/tmp/logs.tar
ssh .. etc
Когда я выполняю это в кли, он работает нормально. Кто-нибудь может мне помочь в этом?