29 lines
628 B
Bash
Executable file
29 lines
628 B
Bash
Executable file
#! /bin/sh
|
|
set -euo pipefail
|
|
set -x
|
|
|
|
push_token=$(< /etc/env/zfs/push-token);
|
|
|
|
start_time=$(date -u +%s%3N)
|
|
health=$(zpool list -H -o health)
|
|
|
|
status="up"
|
|
|
|
echo "$health" | while IFS= read -r line; do
|
|
if [ "$line" != "ONLINE" ]; then
|
|
status="down"
|
|
break
|
|
fi
|
|
done
|
|
|
|
end_time=$(date -u +%s%3N)
|
|
duration=$(("$end_time" - "$start_time"))
|
|
|
|
msg=$(printf '%s' "$health" | tr '\n' ',' | tr -d "'" | jq -sRr @uri)
|
|
url="http://$VAR_IP:4000/api/push/$push_token?ping=$duration&status=$status&msg='$msg'"
|
|
|
|
output=$(curl --fail --no-progress-meter --retry 1 $url 2>&1)
|
|
if [ $? -ne 0 ]; then
|
|
echo "Ping failed: $output" >&2
|
|
fi
|
|
|