commit 01c8db829de8fc0a67cbf92043e91996ccccb4c0
parent 4060cba33503c05a324892b3d97054f59e0982ca
author: nathanael <nathanael@dalliard.ch>
date: Tue, 14 Oct 2025 22:42:10 +0000
s2: add hp
diffstat:
5 files changed, 68 insertions(+), 2 deletions(-)
diff --git a/s2/cronjobs/user b/s2/cronjobs/user
@@ -0,0 +1,2 @@
+~/5 * * * * bin/hp https://s1.dalliard.ch s1.dalliard.ch log/s1.log
+~/5 * * * * bin/hp https://s2.dalliard.ch s2.dalliard.ch log/s2.log
diff --git a/s2/dotfiles/bin/hp b/s2/dotfiles/bin/hp
@@ -0,0 +1,58 @@
+#!/bin/sh -e
+
+delay=3660
+
+main() {
+ test -z "$2" && { echo "usage: ${0##*/} url string log"; exit 1; }
+ url="$1"
+ string="$2"
+ log="$3"
+
+ if up
+ then was_up || say 'up'
+ else
+ was_down && has_been_for_long && say 'still down'
+ was_down || say 'down'
+ fi
+
+}
+
+up() {
+ ftp -MVo - "$url" 2>/dev/null| grep -Eq "$string"
+}
+
+was_up() {
+ test -f "$log" &&
+ tail -n 1 "$log" |
+ grep -qE 'up$'
+}
+
+was_down() {
+ test -f "$log" &&
+ tail -n 1 "$log" |
+ grep -qE 'down$'
+}
+
+has_been_for_long() {
+ last=$(tail -n 1 "$log" | cut -f1 -d' ')
+ now=$(date +%s)
+ test "$((now - last))" -gt $delay
+}
+
+say() {
+ test -f "$log" &&
+ tail -n 1 "$log" >&2
+ message "$1" >&2
+ log "$1"
+}
+
+log() {
+ message "$1" >> "$log"
+ exit 0
+}
+
+message() {
+ printf '%s %s is %s\n' "$(date '+%s %F %T' )" "$url" "$1"
+}
+
+main "$@"
diff --git a/s2/makefile b/s2/makefile
@@ -12,5 +12,8 @@ dots: host
sys: host
@./scripts/sysfiles.sh
+cron: host
+ @./scripts/cronjobs.sh
+
pkg: host
@doas pkg_add -l packages >/dev/null
diff --git a/s2/scripts/cronjobs.sh b/s2/scripts/cronjobs.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+if [ ! -d "$HOME/log/" ]; then mkdir "$HOME/log/"; fi
+crontab "$HOME/src/src/s2/cronjobs/user"
diff --git a/s2/scripts/dotfiles.sh b/s2/scripts/dotfiles.sh
@@ -2,14 +2,13 @@
src="$HOME/src/src"
ln -fsh "$HOME/prv/ssh" "$HOME/.ssh"
+ln -fsh "$src/s2/dotfiles/bin" "$HOME/bin"
ln -fs "$src/s0/dotfiles/hushlogin" "$HOME/.hushlogin"
ln -fs "$src/s0/dotfiles/profile" "$HOME/.profile"
ln -fs "$src/s0/dotfiles/shrc" "$HOME/.shrc"
ln -fs "$src/s0/dotfiles/exrc" "$HOME/.exrc"
-
ln -fs "$src/s1/dotfiles/exrc.local" "$HOME/.exrc.local"
ln -fs "$src/s1/dotfiles/profile.local" "$HOME/.profile.local"
ln -fs "$src/s1/dotfiles/tmux.conf" "$HOME/.tmux.conf"
-
ln -fs "$src/s2/dotfiles/shrc.local" "$HOME/.shrc.local"