ncc.zabbix_fbsd_templates

Yohn Y. 2025-06-01 Parent:4c0387be9c91

19:fa9f1740c55a Go to Latest

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

.. v1.r202506.3 * Ввиду изменений в частоте запуска скрипта, меняем код разброса запусков по времени с 10-ти минут до 2-х минут

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