aboutsummaryrefslogtreecommitdiff
path: root/pkgs/check_systemd/check_systemd
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/check_systemd/check_systemd')
-rwxr-xr-xpkgs/check_systemd/check_systemd20
1 files changed, 20 insertions, 0 deletions
diff --git a/pkgs/check_systemd/check_systemd b/pkgs/check_systemd/check_systemd
new file mode 100755
index 0000000..e668331
--- /dev/null
+++ b/pkgs/check_systemd/check_systemd
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+readarray -t failed < <( systemctl show '*.service' \
+ --state=failed --property=Names \
+ | sed -r -n 's,Names=(.+)\.service,\1,p' \
+ | sort
+ )
+
+if [ ${#failed[@]} -ne 0 ]; then
+ printf -v list ', %s' "${failed[@]}"
+ printf 'WARNING: %s failed\n' "${list:2}"
+ exit 1
+else
+ echo "OK: no failed services"
+ exit 0
+fi
+
+