aboutsummaryrefslogtreecommitdiff
path: root/pkgs/check_systemd
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2018-12-11 18:10:48 +0300
committerIgor Pashev <pashev.igor@gmail.com>2018-12-11 18:10:48 +0300
commit8b0968b2054d3bb8d90b5ac056727f7c2ebeaed3 (patch)
treed03b70f693463fc836a8dbe4240424d2547530c8 /pkgs/check_systemd
parentc4273035cf5876e3ba8ed2c6b492d31c2de290ee (diff)
downloadnixsap-8b0968b2054d3bb8d90b5ac056727f7c2ebeaed3.tar.gz
(* HUGE *) Use nixpkgs overlays
Diffstat (limited to 'pkgs/check_systemd')
-rwxr-xr-xpkgs/check_systemd/check_systemd20
-rw-r--r--pkgs/check_systemd/default.nix25
2 files changed, 45 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
+
+
diff --git a/pkgs/check_systemd/default.nix b/pkgs/check_systemd/default.nix
new file mode 100644
index 0000000..da92a64
--- /dev/null
+++ b/pkgs/check_systemd/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, gnused }:
+
+stdenv.mkDerivation {
+ name = "check_systemd";
+ src = ./check_systemd;
+ outputs = [ "out" "conf" ];
+ unpackPhase = ":";
+ installPhase = ''
+ mkdir -p $out/bin
+
+ cp "$src" $out/bin/check_systemd
+
+ substituteInPlace "$out/bin/"* \
+ --replace sed '${gnused}/bin/sed'
+
+ chmod +x "$out/bin/"*
+
+ cat <<CONF > $conf
+ object CheckCommand "systemd" {
+ import "plugin-check-command"
+ command = [ "$out/bin/check_systemd" ]
+ }
+ CONF
+ '';
+}