|
|
||
|---|---|---|
| .dyndns_env.EXAMPLE | ||
| .file_monitor_env.EXAMPLE | ||
| .gitignore | ||
| .monitoring_env.EXAMPLE | ||
| .post_startup_env.EXAMPLE | ||
| .system_health_check_env.EXAMPLE | ||
| .telegram_notification_env.EXAMPLE | ||
| .zfs_health_check_env.EXAMPLE | ||
| README.md | ||
| dyndns.sh | ||
| file_monitor.sh | ||
| monitoring.sh | ||
| post_startup.sh | ||
| run-before-shutdown.service | ||
| system_health_check.sh | ||
| telegram_notification.sh | ||
| zfs_health_check.sh | ||
README.md
Admin Scripts
This repo contains some administration scripts for administrering a debian machine. The covered tasks range from file change tracking via http/ssh monitoring to zfs health checking.
Installation
The scripts in this repo must be checked out into /root/scripts.
cd /root
git clone ssh://git@git.mneun.ch:2222/radioelephant/admin-scripts.git scripts
mkdir -p /root/logs
For each script there is a .script_name_env.EXAMPLE file, which you must copy (remove .EXAMPLE part) and edit while providing your own information.
If you want to use the example configuration, you can symbolic link the files. This really only makes sense for .system_health_check.
The command for this is:
cd /root/scripts
ln -s .system_health_check.EXAMPLE .system_health_check
Updating
You can update the admin scripts by pulling from the git remote.
cd /root/scripts
git pull
Usage
The check and monitoring scripts in this repo can be run periodically be run and if any problems are detected, they produce output.
The output of these scripts can be redirected and used however you like.
Typically I redirect the output to the telegram_notification.sh script which notifies me of any noisy scripts.
Regardless of any problems each script also logs its executions in /root/logs.
Make sure you created this folder during installation.
Crontab
You can schedule regular execution of these scripts with "cron".
To configure "cron" use the crontab -e command, which opens vim, our favourite text editor, containing the cron schedule.
If you are unsure about the cron schedule, use Crontab Guru.
My current crontab looks like this:
* * * * * bash -c '/root/scripts/file_monitor.sh | /root/scripts/telegram_notification.sh'
*/2 * * * * bash -c '/root/scripts/monitoring.sh | /root/scripts/telegram_notification.sh'
*/4 * * * * bash -c '/root/scripts/dyndns.sh | /root/scripts/telegram_notification.sh'
*/3 * * * * bash -c '/root/scripts/system_health_check.sh | /root/scripts/telegram_notification.sh'
15 * * * * bash -c '/root/scripts/docker_health_check.sh | /root/scripts/telegram_notification.sh'
*/15 * * * * bash -c '/root/scripts/zfs_health_check.sh | /root/scripts/telegram_notification.sh'
@reboot sleep 10 && /root/scripts/telegram_notification.sh '[STARTUP] System just booted'
@reboot sleep 30 && bash -c '/root/scripts/zfs_health_check.sh | /root/scripts/telegram_notification.sh'
Shutdown
To be notified immediately before sever shutdown the contained run-before-shutdown.service can be installed as follows.
This service file will send a telegram notification informing about the pending shutdown.
ln -s /root/scripts/run-before-shutdown.service /etc/systemd/system/shutdown.target.wants/run-before-shutdown.service
systemctl daemon-reload
Contributors
- Robin Meier (robin@meier.si)