ncc.zabbix_fbsd_templates
15:4b52905c8a66 Browse Files
.. v1.r202501.9 + Атомарно изменяем файлы с информацияе по сосотоянию пакетов + Поддержка приколов pkgng 2.0
src/aw.fbsd-mon-helper/bin/lounch.sh src/aw.fbsd-mon-helper/lib/pkg.sh src/aw.fbsd-mon-helper/version
1.1 --- a/src/aw.fbsd-mon-helper/bin/lounch.sh Fri Dec 20 00:53:27 2024 +0300 1.2 +++ b/src/aw.fbsd-mon-helper/bin/lounch.sh Fri Jan 24 22:13:20 2025 +0300 1.3 @@ -43,8 +43,12 @@ 1.4 . "$APP_ROOT/lib/fbsd_up.sh" 1.5 . "$APP_ROOT/lib/pkg.sh" 1.6 1.7 -log "Start process, but sleep some..." 1.8 -sleep_some 1.9 +if [ "$1" != "fast" ] ; then 1.10 + log "Start process, but sleep some..." 1.11 + sleep_some 1.12 +else 1.13 + log "Skip wait, fast mode" 1.14 +fi 1.15 1.16 { 1.17 fbsd_up_do
2.1 --- a/src/aw.fbsd-mon-helper/lib/pkg.sh Fri Dec 20 00:53:27 2024 +0300 2.2 +++ b/src/aw.fbsd-mon-helper/lib/pkg.sh Fri Jan 24 22:13:20 2025 +0300 2.3 @@ -2,17 +2,27 @@ 2.4 # Различная статистика по пакетам 2.5 2.6 v_pkg_detail_status="$STATE_ROOT/pkg_detail" 2.7 +v_pkg_detail_status_tmp="${TMP_ROOT}/pkg_detail" 2.8 + 2.9 v_pkg_update_status="$STATE_ROOT/pkg_update" 2.10 v_pkg_detail_status_list="${TMP_ROOT}/pkg_detail_status_list" 2.11 2.12 pkg_init () { 2.13 if ! [ -d "$v_pkg_detail_status" ]; then 2.14 mkdir -p "$v_pkg_detail_status" 2.15 + 2.16 else 2.17 # Удаляем старые директории, в которые давно не не пишутся данные по пакетам 2.18 log "Clean old detail pakages" 2.19 find "$v_pkg_detail_status" -type f -ctime +1 -print0 | xargs -0n 1 rm -frv 2>&1 | log 2.20 + 2.21 fi 2.22 + 2.23 + if ! [ -d "${v_pkg_detail_status_tmp}" ] ; then 2.24 + mkdir -p "${v_pkg_detail_status_tmp}" 2.25 + 2.26 + fi 2.27 + 2.28 log "Update pakages" 2.29 pkg update 2>&1 | log 2.30 # Обновление базы аудита происходит на получении общих данных по пакетам 2.31 @@ -58,6 +68,7 @@ 2.32 local vl_pkg_name 2.33 local vl_pkg_ver 2.34 local vl_status_file 2.35 + local vl_status_tmp_file 2.36 local vl_pkg_status 2.37 2.38 pkg_get_detail_pkg_list 2.39 @@ -68,7 +79,7 @@ 2.40 vl_pkg_name="$(pkg query '%n' "$vl_pkg_fullname")" 2.41 vl_pkg_repo="$(pkg query '%R' "$vl_pkg_fullname")" 2.42 vl_pkg_ver="$(pkg query '%v' "$vl_pkg_fullname")" 2.43 - vl_pkg_status="$(pkg version -r "$vl_pkg_repo" -qUn "$vl_pkg_name" | awk '{print $2}')" 2.44 + vl_pkg_status="$(pkg version -r "$vl_pkg_repo" -qUn "$vl_pkg_name" | tail -n 1 | awk '{print $2}')" 2.45 2.46 case "$vl_pkg_status" in 2.47 = ) 2.48 @@ -100,13 +111,21 @@ 2.49 esac 2.50 2.51 vl_status_file="${v_pkg_detail_status}/${vl_pkg_name}" 2.52 + vl_status_tmp_file="${v_pkg_detail_status_tmp}/${vl_pkg_name}" 2.53 + 2.54 pkg query 'installed=%t\nmainteiner=%m\nsize=%sb\nlocked=%k' "$vl_pkg_fullname" \ 2.55 - > "${vl_status_file}" 2.56 + > "${vl_status_tmp_file}" 2.57 2.58 - printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >> "$vl_status_file" 2.59 - pkg audit "$vl_pkg_fullname" \ 2.60 - | awk '!($0 ~ "[0-9]* problem\\(s\\) in [0-9]* installed package\\(s\\) found") {print $0}' \ 2.61 - > "${vl_status_file}.audit" 2.62 + printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >> "$vl_status_tmp_file" 2.63 + 2.64 + ( 2.65 + if [ -n "$(pkg audit -q "$vl_pkg_fullname")" ]; then 2.66 + pkg audit "$vl_pkg_fullname" 2.67 + fi 2.68 + ) > "${vl_status_tmp_file}.audit" 2.69 + 2.70 + mv -f "${vl_status_tmp_file}" "${vl_status_file}" 2.71 + mv -f "${vl_status_tmp_file}.audit" "${vl_status_file}.audit" 2.72 2.73 done 2.74 }