ncc.zabbix_fbsd_templates
25:c1d9bf2ab39e Browse Files
.. v1.r202602.4 * Исправлена ошибка с неверным перенаправлением логов ошибок, приводящая к отправке сообщений не в файл, а в демону cron * Если в результате плохой связности не удалось оюновить базы данных пакетов или аудита, не делаем ничего с имеющимися данными. Это позаоляет не флапать мониторингом на плохих каналах.
src/aw.fbsd-mon-helper/lib/log.sh src/aw.fbsd-mon-helper/lib/pkg.sh src/aw.fbsd-mon-helper/version
1.1 --- a/src/aw.fbsd-mon-helper/lib/log.sh Sat Oct 04 12:27:40 2025 +0300 1.2 +++ b/src/aw.fbsd-mon-helper/lib/log.sh Sun Feb 15 18:19:43 2026 +0300 1.3 @@ -2,6 +2,7 @@ 1.4 date '+%s' 1.5 } 1.6 1.7 + 1.8 v_log_timer="$(log_get_timer)" 1.9 v_log_section="None" 1.10 1.11 @@ -9,28 +10,31 @@ 1.12 logger -t "aw-fbsd-monitoring" "$@" 1.13 } 1.14 1.15 + 1.16 to_status () { 1.17 cat | awk -v n="$1" '{print n, " : ", $0}' >> "$STATE_ROOT/status" 1.18 } 1.19 1.20 + 1.21 log_err () { 1.22 - log -p user.err -s "$@" 2<&1 | to_status 1.23 + log -p user.err -s "$@" 2>&1 | to_status 1.24 } 1.25 1.26 1.27 - 1.28 write_status () { 1.29 local module="$1" 1.30 shift 1.31 echo "$0" | to_status "$module" 1.32 } 1.33 1.34 + 1.35 log_start () { 1.36 log "$1: start" 1.37 v_log_timer="$(log_get_timer)" 1.38 v_log_section="$1" 1.39 } 1.40 1.41 + 1.42 log_end () { 1.43 local t 1.44 t="$(( $(log_get_timer) - $v_log_timer ))"
2.1 --- a/src/aw.fbsd-mon-helper/lib/pkg.sh Sat Oct 04 12:27:40 2025 +0300 2.2 +++ b/src/aw.fbsd-mon-helper/lib/pkg.sh Sun Feb 15 18:19:43 2026 +0300 2.3 @@ -5,6 +5,7 @@ 2.4 v_pkg_detail_status_tmp="${TMP_ROOT}/pkg_detail" 2.5 2.6 v_pkg_update_status="${TMP_ROOT}/pkg_update" 2.7 +v_pkg_update_status_subs="${TMP_ROOT}/pkg_update.subs" 2.8 v_pkg_update_status_res="${STATE_ROOT}/pkg_update" 2.9 v_pkg_detail_status_list="${TMP_ROOT}/pkg_detail_status_list" 2.10 2.11 @@ -13,12 +14,20 @@ 2.12 mkdir -p "$v_pkg_detail_status" 2.13 fi 2.14 2.15 - if ! [ -d "${v_pkg_detail_status_tmp}" ] ; then 2.16 + if ! [ -d "${v_pkg_detail_status_tmp}" ]; then 2.17 mkdir -p "${v_pkg_detail_status_tmp}" 2.18 fi 2.19 2.20 + if ! [ -d "${v_pkg_update_status_subs}" ]; then 2.21 + mkdir -p "${v_pkg_update_status_subs}" 2.22 + fi 2.23 + 2.24 log "Update pakages" 2.25 - pkg update 2>&1 | log 2.26 + ( 2.27 + pkg update 2>&1 2.28 + echo $? > "${v_pkg_update_status_subs}/pkg_update" 2.29 + 2.30 + ) | log 2.31 # Обновление базы аудита происходит на получении общих данных по пакетам 2.32 2.33 touch "${v_pkg_detail_status_list}" 2.34 @@ -170,8 +179,13 @@ 2.35 2.36 # - 2.37 # Удаляем старые файлы, в которые давно не не пишутся данные по пакетам 2.38 - log "Clean old files -- detail and audit pakages" 2.39 - find "$v_pkg_detail_status" -type f -cmin +30 -print0 | xargs -0n 1 rm -frv 2>&1 | log 2.40 + if [ "$(cat "${v_pkg_update_status_subs}/pkg_update")" -eq 0 ] ; then 2.41 + log "Clean old files -- detail and audit pakages" 2.42 + find "$v_pkg_detail_status" -type f -cmin +30 -print0 | xargs -0n 1 rm -frv 2>&1 | log 2.43 + 2.44 + else 2.45 + log "WARN: pkg update end with error, do nothing" 2.46 + fi 2.47 } 2.48 2.49 2.50 @@ -189,11 +203,29 @@ 2.51 else 2.52 pkg_init 2.53 2.54 - pkg_check_up_status 2.55 - pkg audit -qrF > "${v_pkg_update_status}.audit" 2.56 - mv -f "${v_pkg_update_status}.audit" "${v_pkg_update_status_res}.audit" 2.57 + if [ "$(cat "${v_pkg_update_status_subs}/pkg_update")" -ne 0 ] ; then 2.58 + log_err "Error on update packages. pkg update status: $(cat "${v_pkg_update_status_subs}/pkg_update")" 2.59 + 2.60 + else 2.61 + pkg_check_up_status 2.62 + pkg_make_detail 2.63 + fi 2.64 + 2.65 + pkg audit -qrF \ 2.66 + > "${v_pkg_update_status}.audit" \ 2.67 + 2> "${v_pkg_update_status_subs}/pkg_audit_err" 2.68 2.69 - pkg_make_detail 2.70 + # Финт ушами, поскольку pkg audit возвращает 1 если всё нормально, но есть пакеты с уязвимостями 2.71 + # и если не всё нормально тоже... 2.72 + if [ "$(cat "${v_pkg_update_status_subs}/pkg_audit_err" | wc -l)" -eq 0 ] ; then 2.73 + mv -f "${v_pkg_update_status}.audit" "${v_pkg_update_status_res}.audit" 2.74 + 2.75 + else 2.76 + log_err "Error on fetch vuln data. pkg audit err:" 2.77 + cat "${v_pkg_update_status_subs}/pkg_audit_err" | awk '{print "PKG AUDIT ERR:", $0}' | log_err 2.78 + touch "${v_pkg_update_status_res}.audit" 2.79 + fi 2.80 + 2.81 fi 2.82 2.83 pkg_finaly