#!/bin/bash # check sssd offline messages export PATH="/usr/sbin/:$PATH" pid_file=/var/run/chk_sssd_offline.pid exec 9>> ${pid_file} flock -n 9 if [[ $? -ne 0 ]] ; then echo "${pid_file} locked, other process running" exit 1 fi curdate=$(date "+%Y-%m-%d %H:%M:") back5min=$(date "+%Y-%m-%d %H:%M:" --date "5 minutes ago") npcurdate=$(date "+%Y-%m-%d %_H:%M:") npback5min=$(date "+%Y-%m-%d %_H:%M:" --date "5 minutes ago") localhostline_num=$(awk -F - '$0 >= "'"(${npback5min}"'" && $0 < "'"(${npcurdate}"'" {print $0}' /var/log/sssd/sssd_localhost.log | grep -i "SSSD is offline" | wc -l) line_num=$(awk -F - '$0 >= "'"(${npback5min}"'" && $0 < "'"(${npcurdate}"'" {print $0}' /var/log/sssd/sssd.log | grep -i "SSSD is offline" | wc -l) pamlogline_num=$(awk -F - '$0 >= "'"(${npback5min}"'" && $0 < "'"(${npcurdate}"'" {print $0}' /var/log/sssd/sssd_pam.log | grep -i "SSSD is offline" | wc -l) nsslogline_num=$(awk -F - '$0 >= "'"(${npback5min}"'" && $0 < "'"(${npcurdate}"'" {print $0}' /var/log/sssd/sssd_nss.log | grep -i "SSSD is offline" | wc -l) if [[ ${localhostline_num} > 0 ]] || [[ ${line_num} > 0 ]] || [[ ${pamlogline_num} > 0 ]] || [[ ${nsslogline_num} > 0 ]] ; then echo "detect sssd_ is offline messages, count sssd.log:${line_num} sssd_localhost.log:${localhostline_num} sssd_pam.log:${pamlogline_num} sssd_nss.log:${nsslogline_num}, restart sssd" timeout 30 systemctl restart sssd fi flock -u 9 exit 0