Как правильно перенаправить вывод выполнения bash-скрипта при использовании команды install - PullRequest
0 голосов
/ 22 октября 2019

Я написал этот пример сценария bash, который я хочу использовать в основном для установки инструментов в удаленной среде, поэтому мне нужно довольно приличное ведение журнала.

Во время выполнения моего скрипта я хочу записать каждый шаг в окно консоли и в файл, который должен содержать все подробности о выполнении вместе с ошибками.

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

$output="$(comand 2>&1)"

Спасибо

#!/bin/bash
logFile="/log.log"
>$logFile
printLog(){
    echo "[$(date "+%Y-%m-%d %H:%M:%S")]:" "$@" "Exit Code: $?" 2>&1 | tee -a $logFile
}
sampleFunc1(){
    printLog $LINENO "sampleFunc1"
    printLog $LINENO && mkdir "/dir1/dir2" && mkdir -p "/dir3/dir4" && mkdir -p "/dir5/dir6" && touch "file.txt" && cp "/file2.txt" "/dir1/dir2/"
    printLog $LINENO "sampleFunc1"
    printLog $LINENO ""
}
sampleFunc2(){
    printLog $LINENO "sampleFunc2"
    array=("/dir1/dir2" "/dir3/dir4" "/dir5/dir6")
    for i in "${array[@]}"
    do
        if [ -d "$i" ]
        then printLog $LINENO "exists $i"
        else printLog $LINENO "creating $i"
            mkdir -p "$i"
        fi
    done
    printLog $LINENO "sampleFunc2"
    printLog $LINENO""
}
sampleFunc3(){
    printLog $LINENO "sampleFunc3"
    printLog apt-get -qq install someApp
    printLog $LINENO "sampleFunc3"
    printLog $LINENO ""
}
sampleFunc1
sampleFunc2
sampleFunc3

1 Ответ

0 голосов
/ 22 октября 2019

Хм, вы используете этот фрагмент для выполнения удаленных задач? Правильно, вы можете записывать вывод в файл, но я бы порекомендовал вам фреймворки для удаленного выполнения для таких вещей. Такие инструменты должным образом заботятся о выводе из инструментов и могут передавать их анализируемый вывод в системы ведения журналов.

Кстати, если вы не запустите этот фрагмент, у вас возникнут проблемы с повышением привилегий в точке, где вы вызываете «apt«

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...