Сброс регистрации отладочного / подробного режима в скрипте bash

Я использую cronjob в качестве пользователя root для проверки через lsof, установили ли некоторые удаленные машины туннель ssh к главному серверу (в противном случае lsof и netstat не будут отображать имя пользователя и sshd pid).

Затем для каждого соединения я хочу запустить сценарии развертывания, которые выполняют несколько задач для этого подключения:

for script in "${deploy_scripts[@]}"
do
    set +e
    sudo -u $deploy_user -H ${script} $user $port $conpid 2>&1 > /tmp/deploy.log
    res=$?
    set -e
    if [ $res -ne 0 ]; then
        echo error executing in $script
        cat /tmp/deploy.log
    fi
done

, и каждый сценарий развертывания по сути выглядит как

#!/bin/bash
set -x
set -e
user=$1
port=$2
pid=$3
do stuff

. deploy.log всегда пуст, и я хочу знать, когда что-то не получается. Я пытался использовать exec и BASH_XTRACEFD , но я не знаю, как сбросить это после каждого сценария развертывания, чтобы он не захватывал корневой сценарий. Сценарии развертывания не должны знать об этом протоколировании.

0
задан 2 May 2019 в 01:42

0 ответов

Другие вопросы по тегам:

Похожие вопросы: