ncc.zabbix_fbsd_templates

Yohn Y. 2025-07-12 Parent:4c0387be9c91

21:b99e08be3c40 Go to Latest

ncc.zabbix_fbsd_templates/src/aw.fbsd-mon-helper/lib/fbsd_up.sh

.. v1.r202507.2 * Очиста от старых файлов статуса через 30 минут а не через сутки

History
1 #!/bin/sh
2 # Работа с обновлениями FreeBSD
4 v_fbsd_up_binary="/usr/sbin/freebsd-update --not-running-from-cron"
5 v_fbsd_up_out="$STATE_ROOT/fbsd_update"
6 v_fbsd_up_status="$STATE_ROOT/fbsd_update.status"
7 v_fbsd_up_current_ver="$STATE_ROOT/fbsd_update.versions"
8 v_fbsd_up_action_flag="$STATE_ROOT/fbsd_update.action.flag"
11 fbsd_up_init () {
12 $v_fbsd_up_binary fetch > "$v_fbsd_up_out"
13 }
16 fbsd_up_status () {
17 echo "$1" > "$v_fbsd_up_status"
18 }
21 fbsd_up_versions () {
22 printf "userland=%s\nkernel=%s\nkcurrent=%s\n" \
23 "$(/bin/freebsd-version -u)" \
24 "$(/bin/freebsd-version -k)" \
25 "$(/bin/freebsd-version -r)" \
26 > "${v_fbsd_up_current_ver}"
27 }
29 fbsd_up_check_action_flag () {
30 local res _act_flag
32 res="$(( $(date '+%s') / 14400 ))"
33 _act_flag="$(cat "$v_fbsd_up_action_flag")"
35 if [ -z "$_act_flag" ] || [ "$res" -ne "$_act_flag" ] ; then
36 echo "$res" | tee "$v_fbsd_up_action_flag"
37 fi
38 }
41 fbsd_up_do () {
42 local _action_flag _ret
44 log_start "fbsd_up_do"
46 _action_flag="$(fbsd_up_check_action_flag)"
47 if [ -z "$_action_flag" ] ; then
48 log "Not need to update: old action mark"
50 else
51 log "New action flag '${_action_flag}' - updating"
52 fbsd_up_init
53 fbsd_up_versions
54 {
55 $v_fbsd_up_binary updatesready
56 _ret="$?"
58 case "$_ret" in
59 0 )
60 if [ "$(cat "$v_fbsd_up_status")" != "NEED UPDATE" ]; then
61 mail -s "$(hostname -f): FREEBSD UPDATE NEEDED" "$ADMIN_MAIL" < "$v_fbsd_up_out"
62 fi
64 fbsd_up_status "NEED UPDATE"
65 ;;
67 1 )
68 fbsd_up_status "RUN ERROR"
69 ;;
71 2 )
72 fbsd_up_status "OK"
73 ;;
75 * )
76 fbsd_up_status "RUN ERROR"
77 log_err "fbsd_up: updatesready return unknown code ${_ret}"
78 ;;
79 esac
80 } 2>&1 | log
81 fi
83 log_end
84 }