ncc.zabbix_fbsd_templates
6:1464321598bd
Go to Latest
ncc.zabbix_fbsd_templates/src/aw.fbsd-mon-helper/lib/pkg.sh
* Крайне странная работа утилиты pkg с пакетами из нескольких репозиториев. Подставлен костыль в этом месте.
2 # Различная статистика по пакетам
4 v_pkg_detail_status="$STATE_ROOT/pkg_detail"
5 v_pkg_update_status="$STATE_ROOT/pkg_update"
8 if !
[ -d
"$v_pkg_detail_status" ]; then
9 mkdir
-p
"$v_pkg_detail_status"
11 # Удаляем старые директории, в которые давно не не пишутся данные по пакетам
12 log
"Clean old detail pakages"
13 find
"$v_pkg_detail_status" -type
f
-ctime
+1
-print0
| xargs
-0n
1 rm
-frv
2>
&1 | log
17 # Обновление базы аудита происходит на получении общих данных по пакетам
28 service
-e
| awk
'$1 ~ "^/usr/local" {print $1}' | while read svc_file
; do
29 if !
[ -f
"$svc_file" ] ; then
33 vl_pkg_fullname="$(pkg
which
"$svc_file" | awk
'$0 ~ "was installed by package" {print $6}')"
34 if [ -z
"$vl_pkg_fullname" ] ; then
35 log
"$svc_file have no matched pkg"
39 vl_pkg_name="$(pkg
query
'%n' "$vl_pkg_fullname")"
40 vl_pkg_repo="$(pkg
query
'%R' "$vl_pkg_fullname")"
41 vl_pkg_ver="$(pkg
query
'%v' "$vl_pkg_fullname")"
42 vl_pkg_status="$(pkg
version
-r
"$vl_pkg_repo" -qUn
"$vl_pkg_name" | awk
'{print $2}')"
44 case "$vl_pkg_status" in
50 vl_pkg_status="NEED UPDATE"
54 vl_pkg_status="REPO VERSION LOWER"
58 vl_pkg_status="NO PACKAGE IN REPO"
63 log_err
-s
"${vl_pkg_name}: pkg can not compare version of package"
67 log_err
-s
"${vl_pkg_name}: unknown status ${vl_pkg_status}"
73 vl_status_file="${v_pkg_detail_status}/${vl_pkg_name}"
74 pkg
query
'installed=%t\nmainteiner=%m\nsize=%sb\nlocked=%k' "$vl_pkg_fullname" \
77 printf 'ver=%s\nrepo=%s\nstatus=%s\n' "${vl_pkg_ver}" "${vl_pkg_repo}" "${vl_pkg_status}" >>
"$vl_status_file"
78 pkg
audit
"$vl_pkg_fullname" \
79 | awk
'!($0 ~ "[0-9]* problem\\(s\\) in [0-9]* installed package\\(s\\) found") {print $0}' \
80 >
"${vl_status_file}.audit"
85 pkg_check_up_status
() {
86 # Проверка статуса наличия обновления для пакета
90 cat
/dev/null
>
"$v_pkg_update_status"
91 pkg
version
-qUL
= | awk
'$2 != ">" {print $1}' | while read _pkg
; do
92 lv_pkg_name="$(pkg
query
'%n' "${_pkg}")"
93 lv_pkg_repo="$(pkg
query
'%R' "${_pkg}")"
94 pkg
version
-Ur
"${lv_pkg_repo}" -n
"${lv_pkg_name}" \
95 | awk
'$2 != ">" && $2 != "=" {print $1}' \
96 >>
"$v_pkg_update_status"
106 pkg
audit
-qF
>
"${v_pkg_update_status}.audit"