mailwolt-installer/scripts/98-motd.sh

459 lines
19 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env bash
set -euo pipefail
source ./lib.sh
log "MOTD installieren …"
install -d /usr/local/bin
cat >/usr/local/bin/mw-motd <<'SH'
#!/usr/bin/env bash
# MOTD MailWolt
# bewusst KEIN "set -e" und KEIN pipefail; MOTD darf nie hart abbrechen
set -u
# ---------- Farben ----------
NC="\033[0m"; WH="\033[1;37m"; CY="\033[1;36m"; GY="\033[0;90m"
GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"
# ---------- Breite / Zentrierung ----------
W=110
term_cols=$(tput cols 2>/dev/null || echo $W)
[ "$term_cols" -gt "$W" ] && pad=$(( (term_cols - W)/2 )) || pad=0
sp(){ [ "$1" -gt 0 ] && printf "%${1}s" " " || true; }
center() { local s="$1"; local n=$(( (W - ${#s})/2 )); sp $((pad+n)); printf "%s\n" "$s"; }
rule(){ sp "$pad"; printf "%0.s=" $(seq 1 "$W"); printf "\n"; }
title(){ sp "$pad"; local t="$1"; local lf=$(( (W - ${#t} - 2)/2 )); local rf=$(( W - ${#t} - 2 - lf )); \
printf "%s" "$(printf '─%.0s' $(seq 1 $lf))"; printf " %s " "$t"; printf "%s\n" "$(printf '─%.0s' $(seq 1 $rf))"; }
kv(){ sp "$pad"; printf "%-12s: %s\n" "$1" "$2"; }
# ---------- Installer-/App-Variablen ----------
UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""
[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
# ---------- Systemdaten ----------
now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo '-')"
upt="$(uptime -p 2>/dev/null || echo '-')"
cores="$(nproc 2>/dev/null || echo 1)"
load_raw="$(awk '{printf "%s / %s / %s",$1,$2,$3}' /proc/loadavg 2>/dev/null || echo '0.00 / 0.00 / 0.00')"
load1="$(awk '{print $1}' /proc/loadavg 2>/dev/null || echo 0)"
# RAM/SWAP
mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo 0)"
mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo 0)"
mem_used=$(( mem_total - mem_avail ))
swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo 0)"
swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo 0)"
swap_used=$(( swap_total - swap_free ))
pct(){ local u="$1" t="$2"; [ "$t" -gt 0 ] || { echo 0; return; }; awk -v u="$u" -v t="$t" 'BEGIN{printf "%d",(u*100)/t}' ; }
ram_pct=$(pct "$mem_used" "$mem_total")
swap_pct=$(pct "$swap_used" "$swap_total")
# Disks
df_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s / %s (%s)",$3,$2,$5}'; }
df_pct(){ df -P "$1" 2>/dev/null | awk 'NR==2{gsub("%","",$5);print $5+0}'; }
disk_root="$(df_line /)"; pct_root="$(df_pct /)"
disk_var="$(df_line /var 2>/dev/null)"; [ -n "$disk_var" ] || disk_var="-"
pct_var="$(df_pct /var 2>/dev/null)"; [ -n "$pct_var" ] || pct_var=0
# IPs (int/ext)
ipv4_int="$(hostname -I 2>/dev/null | awk '{for(i=1;i<=NF;i++) if($i!~/:/){print $i;exit}}')"
ipv6_int="$(hostname -I 2>/dev/null | awk '{for(i=1;i<=NF;i++) if($i~/:/){print $i;exit}}')"
ipv4_ext="$(curl -4fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
ipv6_ext="$(curl -6fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
# ---------- Status-Farben ----------
mark(){ # value thresholdY thresholdR
local v="$1" y="$2" r="$3"
if [ "$v" -ge "$r" ]; then printf "${RD}[HIGH]${NC}"
elif [ "$v" -ge "$y" ]; then printf "${YE}[WARN]${NC}"
else printf "${GR}[OK]${NC}"
fi
}
# Load/CPU-Schwellen (pro Core)
load_pct=$(awk -v l="$load1" -v c="$cores" 'BEGIN{if(c<1)c=1; printf "%d", (l/c)*100}')
m_load="$(mark "$load_pct" 70 100)"
m_ram="$(mark "$ram_pct" 75 90)"
m_swap="$(mark "$swap_pct" 10 50)"
m_root="$(mark "$pct_root" 75 90)"
m_var="$(mark "$pct_var" 75 90)"
# ---------- Header ----------
rule
center ""
center ":::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::"
center ":+:+:+ :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: "
center ":+: +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ "
center "+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+ "
center "+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+ "
center "#+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+# "
center "### ### ### ### ########### ########## ### ### ######## ########## ### "
center ""
rule
# ---------- System ----------
kv "Date / Time" "${YE}${now}${NC}"
sp "$pad"; printf "%-12s: int %-40s ext %s\n" "IPv4" "${ipv4_int:--}" "${ipv4_ext:--}"
sp "$pad"; printf "%-12s: int %-40s ext %s\n" "IPv6" "${ipv6_int:--}" "${ipv6_ext:--}"
kv "Uptime" "$upt"
sp "$pad"; printf "%-12s: %s cores, load %s %b\n" "CPU" "$cores" "$load_raw" "$m_load"
sp "$pad"; printf "%-12s: %s MiB / %s MiB (%d%%) %b %-5s %s MiB / %s MiB (%d%%) %b\n" \
"RAM" "$mem_used" "$mem_total" "$ram_pct" "$m_ram" "SWAP:" "$swap_used" "$swap_total" "$swap_pct" "$m_swap"
sp "$pad"; printf "%-12s: / %s %b %-5s %s %b\n" \
"Disk" "$disk_root" "$m_root" "/var:" "$disk_var" "$m_var"
echo
# ---------- Domains ----------
title "Domains"
[ -n "${UI_HOST:-}" ] && kv "UI" "${UI_HOST}"
[ -n "${WEBMAIL_HOST:-}" ] && kv "Webmail" "${WEBMAIL_HOST}"
[ -n "${MAIL_HOSTNAME:-}" ]&& kv "MX" "${MAIL_HOSTNAME}"
echo
# ---------- Services (4 Spalten, bündig) ----------
title "Services"
svc_state(){ systemctl is-active --quiet "$1" && printf "${GR}[OK]${NC}" || printf "${RD}[FAIL]${NC}"; }
SVC=( nginx mariadb redis-server postfix dovecot rspamd opendkim opendmarc clamav-daemon fail2ban mailwolt-ws mailwolt-queue mailwolt-schedule )
i=0; line=""
for s in "${SVC[@]}"; do
st="$(svc_state "$s")"
seg="$(printf "%-18s %-7s" "$s" "$st")"
line="$line$seg"
i=$((i+1))
if [ $((i%4)) -eq 0 ]; then sp "$pad"; echo "$line"; line=""; else line="$line "; fi
done
[ -n "$line" ] && { sp "$pad"; echo "$line"; }
echo
exit 0
SH
chmod 755 /usr/local/bin/mw-motd
# update-motd Hook
if [[ -d /etc/update-motd.d ]]; then
cat >/etc/update-motd.d/10-mailwolt <<'SH'
#!/usr/bin/env bash
/usr/local/bin/mw-motd
SH
chmod +x /etc/update-motd.d/10-mailwolt
[[ -f /etc/update-motd.d/50-motd-news ]] && chmod -x /etc/update-motd.d/50-motd-news || true
else
# Fallback für Systeme ohne dynamic MOTD
cat >/etc/profile.d/10-mailwolt-motd.sh <<'SH'
case "$-" in *i*) /usr/local/bin/mw-motd ;; esac
SH
fi
: > /etc/motd 2>/dev/null || true
log "[✓] MOTD installiert."
##!/usr/bin/env bash
#set -euo pipefail
#source ./lib.sh
#
#log "MOTD installieren …"
#install -d /usr/local/bin
#cat >/usr/local/bin/mw-motd <<'SH'
##!/usr/bin/env bash
## bewusst KEIN "set -e"; MOTD soll nie hart abbrechen
#set -u
#
## Farben
#NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"; WH="\033[1;37m"
#
## Installer-Variablen (optional)
#UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
#[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
## Aus .env (falls vorhanden)
#if [ -r /var/www/mailwolt/.env ]; then
# LE_EMAIL="${LE_EMAIL:-$(grep -E '^LE_EMAIL=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^LE_EMAIL=//')}"
# PROXY_MODE="${PROXY_MODE:-$(grep -E '^PROXY_MODE=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^PROXY_MODE=//')}"
# NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
#fi
#
## Header
#printf "${CY}"
#cat <<'ASCII'
#
#==========================================================================================
#
#:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
#+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
#+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
#+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
#+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
##+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
#### ### ### ### ########### ########## ### ### ######## ########## ###
#
#==========================================================================================
#
#ASCII
#printf "${NC}\n"
#
## Safe-Helfer (niemals Script killen)
#grab() { eval "$1" 2>/dev/null || true; }
#line() { printf "${GY}%-7s:${NC} %s\n" "$1" "$2"; }
#
## Systemdaten
#now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo -n '-')"
#fqdn="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo -n '-')"
#ip_int="$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || true)"
#ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
#upt="$(uptime -p 2>/dev/null || echo -n '-')"
#cores="$(nproc 2>/dev/null || echo -n '-')"
#load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null || echo -n '-')"
#
## RAM/SWAP (MiB)
#mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
#mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
#mem_used=$(( ${mem_total:-0}-${mem_avail:-0} ))
#swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
#swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
#swap_used=$(( ${swap_total:-0}-${swap_free:-0} ))
#
## Disks
#disk_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'; }
#disk_root="$(disk_line /)"
#disk_var="$(disk_line /var)"
#
#svc_state(){
# local unit="$1"
# if systemctl is-active --quiet "$unit"; then
# printf "${GR}OK${NC}"
# else
# printf "${RD}FAIL${NC}"
# fi
#}
#
## Ausgabe
#printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
#line "FQDN" "$fqdn"
#if [ -n "$ip_ext" ]; then
# printf "${GY}%-7s:${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "IP" "${ip_int:--}" "$ip_ext"
#else
# line "IP" "${ip_int:--}"
#fi
#line "Uptime" "$upt"
#printf "${GY}%-7s:${NC} %s cores, load %s (1/5/15)\n" "CPU" "$cores" "$load"
#printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "RAM" "$mem_used" "$mem_total"
#printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "SWAP" "$swap_used" "$swap_total"
#line "Disk /" "${disk_root:-'-'}"
#line "Disk/var" "${disk_var:-'-'}"
#
## App/Installer Infos
#[ -n "${LE_EMAIL:-}" ] && line "LE Mail" "$LE_EMAIL"
#[ -n "${UI_HOST:-}" ] && line "UI" "$UI_HOST"
#[ -n "${WEBMAIL_HOST:-}" ] && line "Webmail" "$WEBMAIL_HOST"
#[ -n "${MAIL_HOSTNAME:-}" ]&& line "MX" "$MAIL_HOSTNAME"
#if [ -n "${PROXY_MODE:-}" ]; then
# if [ "$PROXY_MODE" = "1" ]; then
# line "Proxy" "ja (NPM: ${NPM_IP:-unbekannt})"
# elif [ "$PROXY_MODE" = "dev" ]; then
# line "Proxy" "Entwicklungsmodus"
# else
# line "Proxy" "nein"
# fi
#fi
#
## Services
#printf "${WH}\nServices:${NC}\n"
#printf " nginx … %b\n" "$(svc_state nginx)"
#printf " mariadb … %b\n" "$(svc_state mariadb)"
#printf " redis-server … %b\n" "$(svc_state redis-server)"
#printf " postfix … %b\n" "$(svc_state postfix)"
#printf " dovecot … %b\n" "$(svc_state dovecot)"
#printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
#printf " mailwolt-queue … %b\n" "$(svc_state mailwolt-queue)"
#printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
#
## Zertifikatskurzinfo (nur wenn vorhanden)
#show_cert_exp(){
# local name="$1" path="$2"
# if [ -r "$path" ]; then
# local exp
# exp="$(openssl x509 -in "$path" -noout -enddate 2>/dev/null | sed 's/notAfter=//')"
# [ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
# fi
#}
#show_cert_exp "UI" "/etc/ssl/ui/fullchain.pem"
#show_cert_exp "Webmail" "/etc/ssl/webmail/fullchain.pem"
#show_cert_exp "MX" "/etc/ssl/mail/fullchain.pem"
#
#exit 0
#SH
#chmod 755 /usr/local/bin/mw-motd
#
#if [[ -d /etc/update-motd.d ]]; then
# cat >/etc/update-motd.d/10-mailwolt <<'SH'
##!/usr/bin/env bash
#/usr/local/bin/mw-motd
#SH
# chmod +x /etc/update-motd.d/10-mailwolt
# [[ -f /etc/update-motd.d/50-motd-news ]] && chmod -x /etc/update-motd.d/50-motd-news || true
#else
# cat >/etc/profile.d/10-mailwolt-motd.sh <<'SH'
#case "$-" in *i*) /usr/local/bin/mw-motd ;; esac
#SH
#fi
#: > /etc/motd 2>/dev/null || true
#
#
#
##cat >/usr/local/bin/mw-motd <<'SH'
###!/usr/bin/env bash
##set -euo pipefail
##NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"
##printf "\033[1;36m"
##cat <<'ASCII'
##:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
##+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
##+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
##+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
##+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
###+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
##### ### ### ### ########### ########## ### ### ######## ########## ###
##ASCII
##printf "\033[0m\n"
##now="$(date '+%Y-%m-%d %H:%M:%S %Z')"
##fqdn="$(hostname -f 2>/dev/null || hostname)"
##ip_int="$(hostname -I 2>/dev/null | awk '{print $1}')"
##ip_ext=""; command -v curl >/dev/null 2>&1 && ip_ext="$(curl -s --max-time 1 https://ifconfig.me || true)"
##upt="$(uptime -p 2>/dev/null || true)"
##cores="$(nproc 2>/dev/null || echo -n '?')"
##load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null)"
##svc(){ systemctl is-active --quiet "$1" && echo -e "${GR}OK${NC}" || echo -e "${RD}FAIL${NC}"; }
##printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
##printf "${GY}FQDN :${NC} %s\n" "$fqdn"
##if [ -n "$ip_ext" ]; then printf "${GY}IP :${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "${ip_int:-?}" "$ip_ext"; else printf "${GY}IP :${NC} %s\n" "${ip_int:-?}"; fi
##printf "${GY}Uptime :${NC} %s\n" "${upt:-?}"
##printf "${GY}Cores :${NC} %s\n" "$cores"
##printf "${GY}Load :${NC} %s (1/5/15)\n" "${load:-?}"
##printf "${GY}Svc :${NC} postfix: $(svc postfix) dovecot: $(svc dovecot) nginx: $(svc nginx) mariadb: $(svc mariadb) redis: $(svc redis)\n"
##SH
##chmod +x /usr/local/bin/mw-motd
#
##cat >/usr/local/bin/mw-motd <<'SH'
###!/usr/bin/env bash
### bewusst KEIN "set -e"; MOTD soll nie hart abbrechen
##set -u
##
### Farben
##NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"; WH="\033[1;37m"
##
### Installer-Variablen (optional)
##UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
##[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
### Aus .env (falls vorhanden)
##if [ -r /var/www/mailwolt/.env ]; then
## LE_EMAIL="${LE_EMAIL:-$(grep -E '^LE_EMAIL=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^LE_EMAIL=//')}"
## PROXY_MODE="${PROXY_MODE:-$(grep -E '^PROXY_MODE=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^PROXY_MODE=//')}"
## NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
##fi
##
### Header
##printf "${CY}"
##cat <<'ASCII'
##:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
##+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
##+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
##+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
##+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
###+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
##### ### ### ### ########### ########## ### ### ######## ########## ###
##ASCII
##printf "${NC}\n"
##
### Safe-Helfer (niemals Script killen)
##grab() { eval "$1" 2>/dev/null || true; }
##line() { printf "${GY}%-7s:${NC} %s\n" "$1" "$2"; }
##
### Systemdaten
##now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo -n '-')"
##fqdn="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo -n '-')"
##ip_int="$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || true)"
##ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
##upt="$(uptime -p 2>/dev/null || echo -n '-')"
##cores="$(nproc 2>/dev/null || echo -n '-')"
##load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null || echo -n '-')"
##
### RAM/SWAP (MiB)
##mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
##mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
##mem_used=$(( ${mem_total:-0}-${mem_avail:-0} ))
##swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
##swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
##swap_used=$(( ${swap_total:-0}-${swap_free:-0} ))
##
### Disks
##disk_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'; }
##disk_root="$(disk_line /)"
##disk_var="$(disk_line /var)"
##
##svc_state(){
## local unit="$1"
## if systemctl is-active --quiet "$unit"; then
## printf "${GR}OK${NC}"
## else
## printf "${RD}FAIL${NC}"
## fi
##}
##
### Ausgabe
##printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
##line "FQDN" "$fqdn"
##if [ -n "$ip_ext" ]; then
## printf "${GY}%-7s:${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "IP" "${ip_int:--}" "$ip_ext"
##else
## line "IP" "${ip_int:--}"
##fi
##line "Uptime" "$upt"
##printf "${GY}%-7s:${NC} %s cores, load %s (1/5/15)\n" "CPU" "$cores" "$load"
##printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "RAM" "$mem_used" "$mem_total"
##printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "SWAP" "$swap_used" "$swap_total"
##line "Disk /" "${disk_root:-'-'}"
##line "Disk/var" "${disk_var:-'-'}"
##
### App/Installer Infos
##[ -n "${LE_EMAIL:-}" ] && line "LE Mail" "$LE_EMAIL"
##[ -n "${UI_HOST:-}" ] && line "UI" "$UI_HOST"
##[ -n "${WEBMAIL_HOST:-}" ] && line "Webmail" "$WEBMAIL_HOST"
##[ -n "${MAIL_HOSTNAME:-}" ]&& line "MX" "$MAIL_HOSTNAME"
##if [ -n "${PROXY_MODE:-}" ]; then
## if [ "$PROXY_MODE" = "1" ]; then
## line "Proxy" "ja (NPM: ${NPM_IP:-unbekannt})"
## elif [ "$PROXY_MODE" = "dev" ]; then
## line "Proxy" "Entwicklungsmodus"
## else
## line "Proxy" "nein"
## fi
##fi
##
### Services
##printf "${WH}\nServices:${NC}\n"
##printf " nginx … %b\n" "$(svc_state nginx)"
##printf " mariadb … %b\n" "$(svc_state mariadb)"
##printf " redis-server … %b\n" "$(svc_state redis-server)"
##printf " postfix … %b\n" "$(svc_state postfix)"
##printf " dovecot … %b\n" "$(svc_state dovecot)"
##printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
##printf " mailwolt-queue … %b\n" "$(svc_state mailwolt-queue)"
##printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
##
### Zertifikatskurzinfo (nur wenn vorhanden)
##show_cert_exp(){
## local name="$1" path="$2"
## if [ -r "$path" ]; then
## local exp
## exp="$(openssl x509 -in "$path" -noout -enddate 2>/dev/null | sed 's/notAfter=//')"
## [ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
## fi
##}
##show_cert_exp "UI" "/etc/ssl/ui/fullchain.pem"
##show_cert_exp "Webmail" "/etc/ssl/webmail/fullchain.pem"
##show_cert_exp "MX" "/etc/ssl/mail/fullchain.pem"
##
##exit 0
##SH
##chmod 755 /usr/local/bin/mw-motd