Here a simple script that setup a dynamic MOTD message ‘ubuntu-like’ on Debian servers:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
#!/bin/bash # Script to install Dynamic MOTD on Debian servers # This version uses figlet if [[ $EUID -ne 0 ]]; then echo "This script must be run as root or using sudo" exit 1 fi if [ ! -f /etc/debian_version ] ; then echo "This script can run ONLY on Debian OS" exit 1 fi # Install required packages: # - figlet: ASCII art for hostname # - lsb-release: get distro details (fallback) apt-get install figlet lsb-release # Backup MOTD file mv -f /etc/motd{,.ORIG} # Symlink dynamic MOTD file ln -s /var/run/motd /etc/motd # Create dynamic motd environment mkdir /etc/update-motd.d/ cd /etc/update-motd.d/ cat <<'EOF' > 00-header #!/bin/sh # # 00-header - create the header of the MOTD # [ -r /etc/os-release ] && . /etc/os-release OS=$PRETTY_NAME if [ -z "$OS" ] && [ -x /usr/bin/lsb_release ]; then OS=$(lsb_release -s -d) fi figlet -f slant $(hostname) printf "\n" printf "\t- %s\n\t- OS version %s\n\t- Kernel %s\n" "$OS" "$(cat /etc/debian_version)" "$(uname -r)" printf "\n" EOF cat <<'EOF' > 10-sysinfo #!/bin/bash # # 10-sysinfo - generate the system information # date=`date` load=`cat /proc/loadavg | awk '{print $1}'` root_usage=`df -h / | awk '/\// {print $(NF-1)}'` home_usage=`df -h /home | awk '/\// {print $(NF-1)}'` memory_usage=`free -m | awk 'NR==2{printf "%.2f%%\n", $3*100/$2 }'` swap_usage=`free -m | awk '/Swap/ { printf("%3.1f%%", "exit !$2;$3/$2*100") }'` users=`users | wc -w` time=`uptime | grep -ohe 'up .*' | sed 's/,/\ hours/g' | awk '{ printf $2" "$3 }'` processes=`ps aux | wc -l` ip=`ifconfig $(route -n | grep '^0.0.0.0' | awk '{ print $8 }') | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'` printf "System information as of %s\n\n" "$date" printf "IP Address:\t%s\tSystem uptime:\t%s\n" "$ip" "$time" printf "System load:\t%s\tProcesses:\t%s\n" "$load" "$processes" printf "RAM used:\t%s\tSwap used:\t%s\n" "$memory_usage" "$swap_usage" printf "Usage on /:\t%s\tUsage on /home:\t%s\n" "$root_usage" "$home_usage" printf "Local Users:\t%s\tProcesses:\t%s\n" "$users" "$processes" EOF cat <<'EOF' > 90-footer #!/bin/sh # # 90-footer - write the admin's footer to the MOTD # [ -f /etc/motd.tail ] && cat /etc/motd.tail || true EOF chmod +x /etc/update-motd.d/* clear echo "Installation completed. Please logout and login again to test." |
If you are running CentOS7, here the how to for that OS.