Add MOTD that summarizes the system current status

This commit is contained in:
coolneng 2021-02-11 05:06:24 +01:00
parent b32e03fcbb
commit 4dddc69f47
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
2 changed files with 48 additions and 0 deletions

View File

@ -101,6 +101,9 @@
# Increase inotify limits # Increase inotify limits
boot.kernel.sysctl = { "fs.inotify.max_user_watches" = 204800; }; boot.kernel.sysctl = { "fs.inotify.max_user_watches" = 204800; };
# MOTD message
programs.fish.interactiveShellInit = "${./scripts/motd.sh}";
# Import other configuration modules # Import other configuration modules
imports = [ imports = [
./modules/hardware-configuration.nix ./modules/hardware-configuration.nix

45
scripts/motd.sh Executable file
View File

@ -0,0 +1,45 @@
#!/run/current-system/sw/bin/bash
# Kernel information
LINUX=$(uname -rs | cut -d " " -f2)
# System uptime
uptime=$(cut -f1 -d. </proc/uptime)
upDays=$((uptime / 60 / 60 / 24))
upHours=$((uptime / 60 / 60 % 24))
upMins=$((uptime / 60 % 60))
upSecs=$((uptime % 60))
# System load
MEMORY=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }')
CPU_LOAD=$(uptime | cut -d: -f5)
echo "============================================================
- Kernel..............: $LINUX
- System load.........:$CPU_LOAD
- Memory used.........: $MEMORY
- System uptime.......: $upDays days $upHours hours $upMins minutes $upSecs seconds
============================================================"
services=(
"syncthing.service"
"radicale.service"
"miniflux.service"
"phpfpm-wallabag.service"
"gitea.service"
"matrix-synapse.service"
"nginx.service"
)
for var in "${services[@]}"; do
if [[ -z $var ]]; then
printf "\n"
else
if systemctl -q is-active "${var}"; then
printf "%-40s [\e[32mOK\e[39m]\n" "$var"
else
printf "%-40s [\e[31mFAIL\e[39m]\n" "$var"
fi
fi
done
echo "============================================================"