57 lines
2.9 KiB
Bash
57 lines
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
install -d /usr/local/bin
|
|
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 '?')"
|
|
mhz="$(LC_ALL=C lscpu 2>/dev/null | awk -F: '/MHz/{gsub(/ /,"",$2); printf("%.0f MHz",$2); exit}')"
|
|
load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null)"
|
|
mem_total="$(awk '/MemTotal/{printf "%.2f GB",$2/1024/1024}' /proc/meminfo)"
|
|
mem_free="$(awk '/MemAvailable/{printf "%.2f GB",$2/1024/1024}' /proc/meminfo)"
|
|
svc_status(){ 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}(external:${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}Core(s) :${NC} %s core(s) at ${CY}%s${NC}\n" "$cores" "${mhz:-?}"
|
|
printf "${GY}Load :${NC} %s (1 / 5 / 15)\n" "${load:-?}"
|
|
printf "${GY}Memory :${NC} ${RD}%s${NC} ${GY}(free)${NC} / ${CY}%s${NC} ${GY}(total)${NC}\n" "${mem_free:-?}" "${mem_total:-?}"
|
|
echo
|
|
printf "${GY}Services :${NC} postfix: $(svc_status postfix) dovecot: $(svc_status dovecot) nginx: $(svc_status nginx) mariadb: $(svc_status mariadb) redis: $(svc_status redis)\n"
|
|
SH
|
|
chmod +x /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
|
|
[[ -f /etc/update-motd.d/80-livepatch ]] && chmod -x /etc/update-motd.d/80-livepatch || 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
|