#!/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