@MarkThule

Bash: как записать вывод команды из HEREDOC в лог файл?

Есть основной сервер. Он выполняет большой список команд с помощью HEREDOC по SSH на удалённом сервере. К каждой команде есть условие if. Результат выполнения команд на удалённом сервере логируется в файл на основном сервере. Но проблема в том, что логирование работает очень криво. Либо не работает в принципе, либо если завернуть в функцию, то выполняется всегда в независимости от результата. Как это можно реализовать? Либо можно реализовать подобный скрипт без HEREDOC?

Пример:
function ssh_connection {
      ssh -T -i <ssh_key> root@10.20.30.40
}
log="Failed! $(date)"
log_file=/var/log/log_file
ssh_connection << SCRIPT
          command
          if [ \$? - eq 0 ]
          then
                 echo "Success"
          else
                 echo "Failed"
                 echo $log >> $log_file
          fi
SCRIPT
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
ssh -T -i <ssh_key> root@10.20.30.40 -с 'command && echo "Success" || ( echo "Failed"; echo "Failed! $(date) >> /var/log/log_file'
}
Ответ написан
@voleg4u
http://www.voleg.info/
Могу порекомендовать команду logger для сваливания логов прямо в messages. Практика показала что решение ультимативно. Даже ротацией заниматься не нужно. А если все сливается на центральный syslog , то ваапще зашибись.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы