From b9a6c3c44d226ba4afaa941448b4a9b480a77505 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Tue, 11 Feb 2020 13:14:20 +0100 Subject: bin/ii-watch: check for connectivity periodically and reconnect if connection seems lost --- bin/ii-watch | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'bin/ii-watch') diff --git a/bin/ii-watch b/bin/ii-watch index 0987656..ae1ab94 100755 --- a/bin/ii-watch +++ b/bin/ii-watch @@ -9,9 +9,22 @@ checksum=$( calculate_script_checksum ) +next_connection_check=0 +last_seen=0 + while pgrep -x 'ii' >/dev/null && \ [ "$(calculate_script_checksum)" = "${checksum}" ]; do # this avoids missing modifications during our last execution + if [ "$(date +%s)" -ge ${next_connection_check} ]; then + # request this more often on startup + if [ ${last_seen} -ne 0 ]; then + next_connection_check=$(( + $(date +%s) + 60*5 + )) + fi + echo '/NAMES #archlinux32' \ + | sponge "${irc_dir}/in" + fi if [ -z "${said}" ]; then # shellcheck disable=SC2046 inotifywait -t 30 -e 'CLOSE_WRITE,CLOSE' -e 'CREATE,ISDIR' $( @@ -24,4 +37,22 @@ while pgrep -x 'ii' >/dev/null && \ said=$( "${base_dir}/bin/ii-answer" ) + # When was the buildmaster seen the last time? + last_seen=$( + { + echo 0 + sed ' + s/^\([0-9]\+\) = #archlinux32\( \S\+\)* buildmaster\( \S\+\)*$/\1/ + t + d + ' "${irc_dir}/out" + } \ + | sort -n \ + | tail -n1 + ) + # more than 10 minutes ago + if [ $((last_seen + 60*10)) -lt "$(date +%s)" ]; then + # reconnect! + systemctl restart ii + fi done -- cgit v1.2.3