commit acea22e3a895de55312487c8f075e1f15c85ea25 from: mischa date: Sun Jun 11 06:53:03 2023 UTC change 1 ping to 3 commit - 2282d1fffb4634924fb2e60f6318cf7610ba9010 commit + acea22e3a895de55312487c8f075e1f15c85ea25 blob - 4ea9f139259b1559e059a469e3acde8c8e8aeb60 blob + 8941434e5bf40e4c1d7b67344f87d37146925291 --- README.md +++ README.md @@ -73,7 +73,7 @@ Default: -i = incidents.txt (default) -p = pastincidents.txt (default) -o = index.html (default) - -r = rss file (no default) + -r = rss file (no default, optional) ``` For example: blob - cdacba60ffcb91ea16f68fb1626d02fb5786b5c5 blob + 9453ee84850c1af71d9fb16e04b7404e95b41811 --- incidents.txt +++ incidents.txt @@ -1 +1,2 @@ +202306101055,Incident,Between 00:14 and 00:21 UTC on 2023-06-10 a network outage happened at our upstream provider. Resolved 202306021200,Maintenance,On 2023-06-15 between 22:30-02:30 UTC our upstream provider has scheduled network maintenance blob - 35deada978a8d9ce656e83ea2e84fd76073c5537 blob + d23e19e772af30785f9e36304d85c5745ef8c8d7 --- uptimeatomic +++ uptimeatomic @@ -1,11 +1,11 @@ #!/bin/ksh # -# Uptime Atomic v20230604 +# Uptime Atomic v2023060401 # https://git.high5.nl/uptimeatomic/ # export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin CONFIGFILE="uptimeatomic.conf" -WORKDIR=$(dirname -- "$(command -v -- "$0")") +WORKDIR=$(dirname $0) usage() { echo "usage: ${0##*/} [-c checksfile] [-i incidentsfile] [-p pastincidentsfile] [-o htmlfile]" 1>&2 @@ -14,16 +14,16 @@ usage() { date_rss() { if [ -n "${1}" ]; then - date -uj '+%a, %d %b %Y %H:%M:%S %z' ${1} + date -ju '+%a, %d %b %Y %H:%M:%S %z' ${1} else - date -uj '+%a, %d %b %Y %H:%M:%S %z' + date -ju '+%a, %d %b %Y %H:%M:%S %z' fi } date_incident() { if [ -n "${1}" ]; then - date -uj '+%F %H:%M %Z' ${1} + date -ju '+%F %H:%M %Z' ${1} else - date -uj '+%F %H:%M %Z' + date -ju '+%F %H:%M %Z' fi } @@ -43,7 +43,7 @@ cat << EOF >> ${_RSSFILE} ${_type} ${RSS_URL}/rss.xml -${RSS_URL}/rss.xml?$(date -j '+%s' $(echo "${_date}")) +${RSS_URL}/rss.xml?$(date -ju +%s $(echo "${_date}")) $(date_rss "${_date}") @@ -58,12 +58,12 @@ notify() { if [ ${_priority} == "ko" ]; then echo "${_status}." | mail -r "${TITLE} <${SENDER}>" -s "${_name} DOWN" ${RECIPIENT} - ${PUSHOVER} -c ${PUSHOVER_CONF} -t "${TITLE}" -m "${_name} DOWN ${_status}." -p 1 >/dev/null 2>&1 + ${PUSHOVER} -c ${PUSHOVER_CONF} -t "${TITLE}" -m "${_name} DOWN ${_status}" -p 1 >/dev/null 2>&1 touch "${PUSHOVER_STATUS}/${_name}" fi if [ ${_priority} == "ok" ]; then - _seconds=$(expr $(date +%s) - $(stat -r "${PUSHOVER_STATUS}/${_name}" | awk '{print $11}')) - _downtime=$(date -r${_seconds} -u +%H:%M:%S) + _seconds=$(expr $(date -ju +%s) - $(stat -r "${PUSHOVER_STATUS}/${_name}" | awk '{print $11}')) + _downtime=$(date -jur ${_seconds} +%H:%M:%S) echo "${_status} - down for ${_downtime}" | mail -r "${TITLE} <${SENDER}>" -s "${_name} OK" ${RECIPIENT} ${PUSHOVER} -c ${PUSHOVER_CONF} -t "${TITLE}" -m "${_name} OK ${_status} - down for ${_downtime}" >/dev/null 2>&1 @@ -94,7 +94,7 @@ check() { fi ;; ping*) - ping -${IPv}w "${TIMEOUT}" -c 1 "${_host}" >/dev/null 2>&1 + ping -${IPv}w "${TIMEOUT}" -c 3 "${_host}" >/dev/null 2>&1 statuscode=$? if [ "${statuscode}" -ne "${_expectedcode}" ]; then echo "Host unreachable" > "${_TMP}/ko/${_name}.status" @@ -128,7 +128,7 @@ process_status() { if [ ${_status_files} == "ko" ]; then echo "
  • ${_name} (${_status})Disrupted
  • " >> ${_HTMLFILE} if [ ! -e "${PUSHOVER_STATUS}/${_name}" ]; then - notify "${_name}" "${status}" "${_status_files}" + notify "${_name}" "${_status}" "${_status_files}" fi fi if [ ${_status_files} == "maint" ]; then @@ -161,10 +161,10 @@ parse_file() { } cd ${WORKDIR} -if [ -e "${CONFIGFILE}" ]; then +if [ -s "${CONFIGFILE}" ]; then . ${WORKDIR}/${CONFIGFILE} else - echo "Configfile ${WORKDIR}/${CONFIGFILE} doesn't exist." + echo "Config ${WORKDIR}/${CONFIGFILE} doesn't exist." exit fi @@ -174,7 +174,7 @@ while getopts c:i:o:r:h arg; do i) INCIDENTSFILE=${OPTARG};; p) PASTINCIDENTSFILE=${OPTARG};; o) HTMLFILE=${OPTARG};; - r) RSS_FILE=${OPTARG};; + r) RSSFILE=${OPTARG};; h) usage;; *) usage;; esac @@ -188,7 +188,7 @@ fi _TMP="$(mktemp -d)" mkdir -p "${_TMP}/ok" "${_TMP}/ko" "${_TMP}/maint" || exit 1 _HTMLFILE="${_TMP}/${HTMLFILE}" -[[ -n "${RSS_FILE}" ]] && _RSSFILE="${_TMP}/${RSS_FILE}" +[[ -n "${RSSFILE}" ]] && _RSSFILE="${_TMP}/${RSSFILE}" parse_file "${CHECKFILE}" @@ -273,7 +273,7 @@ process_status "maint" process_status "ok" echo "" >> ${_HTMLFILE} -echo "

    Last check: $(date -u '+%FT%T %Z')

    " >> ${_HTMLFILE} +echo "

    Last check: $(date -ju '+%FT%T %Z')

    " >> ${_HTMLFILE} if [ -s "${PASTINCIDENTSFILE}" ]; then echo '

    Past Incidents / Maintenance

    ' >> ${_HTMLFILE} @@ -287,7 +287,7 @@ cat << EOF >> ${_HTMLFILE}

    Uptime Atomic loosely based on Tinystatus EOF -[[ -n "${_RSSFILE}" ]] && echo " - RSS" >> ${_HTMLFILE} +[[ -n "${_RSSFILE}" ]] && echo " - RSS" >> ${_HTMLFILE} cat << EOF >> ${_HTMLFILE}

    @@ -305,13 +305,13 @@ cat << EOF >> ${_RSSFILE} EOF fi -if [[ -f "${HTMLDIR}/${RSS_FILE}" ]]; then - _diff=$(diff "${_RSSFILE}" "${HTMLDIR}/${RSS_FILE}" | wc -l) +if [[ -f "${HTMLDIR}/${RSSFILE}" ]]; then + _diff=$(diff "${_RSSFILE}" "${HTMLDIR}/${RSSFILE}" | wc -l) if [ "${_diff}" -ne "4" ]; then - cp ${_RSSFILE} ${HTMLDIR}/${RSS_FILE} + cp ${_RSSFILE} ${HTMLDIR}/${RSSFILE} fi -elif [ -n "${RSS_FILE}" ]; then - cp ${_RSSFILE} ${HTMLDIR}/${RSS_FILE} +elif [ -n "${RSSFILE}" ]; then + cp ${_RSSFILE} ${HTMLDIR}/${RSSFILE} fi cp ${_HTMLFILE} ${HTMLDIR}/${HTMLFILE}