1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-21 10:39:53 +00:00
Munin-Contrib/plugins/hibiscus/hibiscus_last_account_update
Christian Weiske 4737389bdc Add Hibiscus server homebanking plugins
1. Last account update age in hours
2. Account balances

The plugins have been in use for several months now and warn
when the balance of accounts drop below a configurable value,
and when Hibiscus stopped updating data because a TAN needs to
be entered manually after 90 days.

The plugins directly query the MySQL database of a Hibiscus server
instance.
See https://www.willuhn.de/products/hibiscus-server/ for more information.
2025-04-18 17:35:55 +02:00

99 lines
2.2 KiB
Bash
Executable file

#!/bin/bash
# -*- sh -*-
set -e
set -o pipefail
: << =cut
=head1 NAME
hibiscus_last_account_update - Age of the last bank account update
Connects to the database of a "Hibiscus Server" homebanking instance.
Checks bank accounts and returns the balance ("Saldo") update date of
the account that was updated least recently.
This script helps to get notified when the automatic updates stopped
because a TAN needs to be entered manually after 90 days.
=head1 CONFIGURATION
=head2 ENVIRONMENT VARIABLES
host - Hostname of MySQL/MariaDB server
user - Database user
password - Database password
database - Database name
mysql - MySQL/MariaDB binary
host_name - To put the graph onto a different host
=head2 CONFIGURATION EXAMPLE
[hibiscus_*]
env.user hibiscususer
env.password thisismypassword
env.mysql /usr/bin/mariadb
=head1 REQUIREMENTS
"bash" and "mysql"/"mariadb" are required.
"bash" instead of "sh" needed because of "set -o pipefail", which is not
supported in Debian 12 yet.
=head1 SEE ALSO
https://www.willuhn.de/products/hibiscus-server/
=head1 AUTHOR
Christian Weiske <cweiske@cweiske.de>
=head1 LICENSE
AGPL-3.0-only https://spdx.org/licenses/AGPL-3.0-only.html
=head1 MAGIC MARKERS
#%# family=manual
=cut
# variables
database=${database:-hibiscus}
host=${host:-localhost}
user=${user:-}
pass=${password:-}
mysql=${mysql:-/usr/bin/mysql}
host_name=${host_name:-}
case $1 in
config)
echo "graph_title Hibiscus last account update"
echo "graph_vlabel Age in hours"
echo "graph_args --base 1000 -l 0"
echo "graph_category banking"
echo "graph_order age"
echo "age.label Oldest account update age"
echo "age.draw AREA"
echo "age.warning 72"
if [ -n "$host_name" ]; then
echo "host_name $host_name"
fi
exit 0;;
esac
age_hours=$(
echo "\
SELECT HOUR(TIMEDIFF(NOW(), saldo_datum)) AS age\
FROM konto\
WHERE flags IS NULL\
ORDER BY age DESC\
LIMIT 1"\
| $mysql\
--skip-ssl\
--skip-column-names\
-h"$host" -u"$user" -p"$password"\
"$database"
)
echo "age.value $age_hours"