Laudende Default seite entfernen
parent
26c01be12a
commit
ede1b82c41
|
|
@ -1,24 +1,14 @@
|
||||||
#!/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'
|
cat >/usr/local/bin/mw-motd <<'SH'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -euo pipefail
|
# bewusst KEIN "set -e"; MOTD soll nie hart abbrechen
|
||||||
|
set -u
|
||||||
|
|
||||||
# Farben
|
# 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"
|
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)
|
# Installer-Variablen (optional)
|
||||||
UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
|
UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
|
||||||
if [ -r /etc/mailwolt/installer.env ]; then
|
[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
|
||||||
# shellcheck disable=SC1091
|
|
||||||
. /etc/mailwolt/installer.env || true
|
|
||||||
fi
|
|
||||||
# Aus .env (falls vorhanden)
|
# Aus .env (falls vorhanden)
|
||||||
if [ -r /var/www/mailwolt/.env ]; then
|
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=//')}"
|
LE_EMAIL="${LE_EMAIL:-$(grep -E '^LE_EMAIL=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^LE_EMAIL=//')}"
|
||||||
|
|
@ -26,7 +16,7 @@ if [ -r /var/www/mailwolt/.env ]; then
|
||||||
NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
|
NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ASCII-Header
|
# Header
|
||||||
printf "${CY}"
|
printf "${CY}"
|
||||||
cat <<'ASCII'
|
cat <<'ASCII'
|
||||||
:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
|
:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
|
||||||
|
|
@ -39,28 +29,29 @@ cat <<'ASCII'
|
||||||
ASCII
|
ASCII
|
||||||
printf "${NC}\n"
|
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
|
# Systemdaten
|
||||||
now="$(date '+%Y-%m-%d %H:%M:%S %Z')"
|
now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo -n '-')"
|
||||||
fqdn="$(hostname -f 2>/dev/null || hostname)"
|
fqdn="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo -n '-')"
|
||||||
ip_int="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
ip_int="$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || true)"
|
||||||
ip_ext=""; command -v curl >/dev/null 2>&1 && ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
|
ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
|
||||||
upt="$(uptime -p 2>/dev/null || true)"
|
upt="$(uptime -p 2>/dev/null || echo -n '-')"
|
||||||
cores="$(nproc 2>/dev/null || echo -n '?')"
|
cores="$(nproc 2>/dev/null || echo -n '-')"
|
||||||
load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null)"
|
load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null || echo -n '-')"
|
||||||
|
|
||||||
# RAM/SWAP (MiB)
|
# RAM/SWAP (MiB)
|
||||||
mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null)"
|
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)"
|
mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
|
||||||
mem_used=$(( (mem_total-mem_avail) ))
|
mem_used=$(( ${mem_total:-0}-${mem_avail:-0} ))
|
||||||
swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null)"
|
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)"
|
swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
|
||||||
swap_used=$(( (swap_total-swap_free) ))
|
swap_used=$(( ${swap_total:-0}-${swap_free:-0} ))
|
||||||
|
|
||||||
# Disks (/, /var)
|
# Disks
|
||||||
disk_line(){
|
disk_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'; }
|
||||||
local mnt="$1"
|
|
||||||
df -hP "$mnt" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'
|
|
||||||
}
|
|
||||||
disk_root="$(disk_line /)"
|
disk_root="$(disk_line /)"
|
||||||
disk_var="$(disk_line /var)"
|
disk_var="$(disk_line /var)"
|
||||||
|
|
||||||
|
|
@ -73,48 +64,49 @@ svc_state(){
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Zeilen
|
# Ausgabe
|
||||||
printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
|
printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
|
||||||
printf "${GY}FQDN :${NC} %s\n" "$fqdn"
|
line "FQDN" "$fqdn"
|
||||||
if [ -n "$ip_ext" ]; then
|
if [ -n "$ip_ext" ]; then
|
||||||
printf "${GY}IP :${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "${ip_int:-?}" "$ip_ext"
|
printf "${GY}%-7s:${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "IP" "${ip_int:--}" "$ip_ext"
|
||||||
else
|
else
|
||||||
printf "${GY}IP :${NC} %s\n" "${ip_int:-?}"
|
line "IP" "${ip_int:--}"
|
||||||
fi
|
fi
|
||||||
printf "${GY}Uptime :${NC} %s\n" "${upt:-?}"
|
line "Uptime" "$upt"
|
||||||
printf "${GY}CPU :${NC} %s cores, load %s (1/5/15)\n" "$cores" "${load:-?}"
|
printf "${GY}%-7s:${NC} %s cores, load %s (1/5/15)\n" "CPU" "$cores" "$load"
|
||||||
printf "${GY}RAM :${NC} %s MiB used / %s MiB total\n" "${mem_used:-?}" "${mem_total:-?}"
|
printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "RAM" "$mem_used" "$mem_total"
|
||||||
printf "${GY}SWAP :${NC} %s MiB used / %s MiB total\n" "${swap_used:-?}" "${swap_total:-?}"
|
printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "SWAP" "$swap_used" "$swap_total"
|
||||||
printf "${GY}Disk / :${NC} %s\n" "${disk_root:-?}"
|
line "Disk /" "${disk_root:-'-'}"
|
||||||
printf "${GY}Disk/var:${NC} %s\n" "${disk_var:-?}"
|
line "Disk/var" "${disk_var:-'-'}"
|
||||||
|
|
||||||
# App/Installer Infos
|
# App/Installer Infos
|
||||||
[ -n "$LE_EMAIL" ] && printf "${GY}LE E-Mail:${NC} %s\n" "$LE_EMAIL"
|
[ -n "${LE_EMAIL:-}" ] && line "LE Mail" "$LE_EMAIL"
|
||||||
[ -n "$UI_HOST" ] && printf "${GY}UI Host :${NC} %s\n" "$UI_HOST"
|
[ -n "${UI_HOST:-}" ] && line "UI" "$UI_HOST"
|
||||||
[ -n "$WEBMAIL_HOST" ] && printf "${GY}Webmail :${NC} %s\n" "$WEBMAIL_HOST"
|
[ -n "${WEBMAIL_HOST:-}" ] && line "Webmail" "$WEBMAIL_HOST"
|
||||||
[ -n "$MAIL_HOSTNAME" ]&& printf "${GY}MX Host :${NC} %s\n" "$MAIL_HOSTNAME"
|
[ -n "${MAIL_HOSTNAME:-}" ]&& line "MX" "$MAIL_HOSTNAME"
|
||||||
if [ -n "${PROXY_MODE:-}" ]; then
|
if [ -n "${PROXY_MODE:-}" ]; then
|
||||||
if [ "$PROXY_MODE" = "1" ]; then
|
if [ "$PROXY_MODE" = "1" ]; then
|
||||||
printf "${GY}Proxy :${NC} ja (NPM: %s)\n" "${NPM_IP:-unbekannt}"
|
line "Proxy" "ja (NPM: ${NPM_IP:-unbekannt})"
|
||||||
|
elif [ "$PROXY_MODE" = "dev" ]; then
|
||||||
|
line "Proxy" "Entwicklungsmodus"
|
||||||
else
|
else
|
||||||
printf "${GY}Proxy :${NC} nein\n"
|
line "Proxy" "nein"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Services
|
# Services
|
||||||
printf "${WH}\nServices:${NC}\n"
|
printf "${WH}\nServices:${NC}\n"
|
||||||
printf " nginx … %b\n" "$(svc_state nginx)"
|
printf " nginx … %b\n" "$(svc_state nginx)"
|
||||||
printf " mariadb … %b\n" "$(svc_state mariadb)"
|
printf " mariadb … %b\n" "$(svc_state mariadb)"
|
||||||
printf " redis-server … %b\n" "$(svc_state redis-server)"
|
printf " redis-server … %b\n" "$(svc_state redis-server)"
|
||||||
printf " postfix … %b\n" "$(svc_state postfix)"
|
printf " postfix … %b\n" "$(svc_state postfix)"
|
||||||
printf " dovecot … %b\n" "$(svc_state dovecot)"
|
printf " dovecot … %b\n" "$(svc_state dovecot)"
|
||||||
# App Units (optional)
|
printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
|
||||||
printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
|
printf " mailwolt-queue … %b\n" "$(svc_state mailwolt-queue)"
|
||||||
printf " mailwolt-queue… %b\n" "$(svc_state mailwolt-queue)"
|
printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
|
||||||
printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
|
|
||||||
|
|
||||||
# Zertifikate (kurzer Hinweis, optional)
|
# Zertifikatskurzinfo (nur wenn vorhanden)
|
||||||
show_cert_hint(){
|
show_cert_exp(){
|
||||||
local name="$1" path="$2"
|
local name="$1" path="$2"
|
||||||
if [ -r "$path" ]; then
|
if [ -r "$path" ]; then
|
||||||
local exp
|
local exp
|
||||||
|
|
@ -122,32 +114,14 @@ show_cert_hint(){
|
||||||
[ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
|
[ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
show_cert_hint "UI" "/etc/ssl/ui/fullchain.pem"
|
show_cert_exp "UI" "/etc/ssl/ui/fullchain.pem"
|
||||||
show_cert_hint "Webmail" "/etc/ssl/webmail/fullchain.pem"
|
show_cert_exp "Webmail" "/etc/ssl/webmail/fullchain.pem"
|
||||||
show_cert_hint "MX" "/etc/ssl/mail/fullchain.pem"
|
show_cert_exp "MX" "/etc/ssl/mail/fullchain.pem"
|
||||||
|
|
||||||
echo
|
exit 0
|
||||||
SH
|
SH
|
||||||
|
chmod 755 /usr/local/bin/mw-motd
|
||||||
|
|
||||||
chmod +x /usr/local/bin/mw-motd
|
|
||||||
|
|
||||||
# update-motd integration
|
|
||||||
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
|
|
||||||
|
|
||||||
# altes /etc/motd leeren (sonst doppelt)
|
|
||||||
: > /etc/motd 2>/dev/null || true
|
|
||||||
|
|
||||||
##!/usr/bin/env bash
|
##!/usr/bin/env bash
|
||||||
#set -euo pipefail
|
#set -euo pipefail
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue