blse2-public/common-debian/templates/usr/local/sbin/update-motd.sh.j2

76 lines
3.6 KiB
Django/Jinja
Executable File

#!/bin/sh
# Update dynamic MOTD file
# {{ ansible_managed }}
set -o errexit
TMPFILE=$(mktemp)
TGTFILE=/run/blse-motd.dynamic
{% if ansible_distribution_release == "jessie" %}
BLSEVER="BLSE 2.x (Debian Jessie)"
{% elif ansible_distribution_release == "stretch" %}
BLSEVER="BLSE 2.1 (Debian Stretch)"
{% elif ansible_distribution_release == "buster" %}
BLSEVER="BLSE 2.2 (Debian Buster)"
{% elif ansible_distribution_release == "bullseye" %}
BLSEVER="BLSE 2.3 (Debian Bullseye)"
{% elif ansible_distribution_release == "bookworm" %}
BLSEVER="BLSE 2.4 (Debian Bookworm)"
{% endif %}
echo >> $TMPFILE
echo "\033[01;34mBoniface Labs Server Environment \033[01;36m${BLSEVER}\033[0m" >> $TMPFILE
echo -n "> \033[01;32m$(hostname)\033[0m" >> $TMPFILE
if test -f /etc/hostdesc; then
echo " - $( cat /etc/hostdesc )" >> $TMPFILE
else
echo >> $TMPFILE
fi
echo -n "> " >> $TMPFILE
# Get virtual machine info from vhostmd if it exists
VENDOR="$(/usr/sbin/dmidecode | grep Vendor | tr -d ' \t\n\r')"
if [ "$VENDOR" = "Vendor:Bochs" ] || [ "$VENDOR" = "Vendor:SeaBIOS" ]; then
hvhostname=$(/usr/sbin/vm-dump-metrics | grep -A1 HostName | awk -F'>' '{ if ($1 == " <value") print $2 }')
hvvirtproductinfo=$(/usr/sbin/vm-dump-metrics | grep -A1 VirtProductInfo | awk -F'>' '{ if ($1 == " <value") print $2 }')
if [ "$hvhostname" ]; then
echo "\033[1;37mKVM virtual machine\033[0m on node \033[1;31m${hvhostname}\033[0m (${hvvirtproductinfo})" >> $TMPFILE
else
echo "\033[1;37mRemote KVM virtual machine\033[0m" >> $TMPFILE
fi
elif [ "$VENDOR" = 'Vendor:DigitalOcean' ]; then
echo "\033[1;37mRemote KVM virtual machine\033[0m on \033[1;31mDigitalOcean\033[0m" >> $TMPFILE
else
# Are we a KVM hypervsor
if [ "$(hostname | grep dcrhv)" ]; then
echo "\033[1;37mRouter Hypervisor\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
# Are we a Ceph node?
elif [ "$(hostname | grep ceph)" ]; then
echo "\033[1;37mCeph Storage Node\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
# Are we a GPU node?
elif [ "$(hostname | grep gpu)" ]; then
echo "\033[1;37mGPU Processing Host\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
# Are we Base?
elif [ "$(hostname | grep base)" ]; then
echo "\033[1;37mHome Base\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
# Are we Env?
elif [ "$(hostname | grep env)" ]; then
echo "\033[1;37mEnvironmental Monitor\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
# Are we Kal?
elif [ "$(hostname | grep kal)" ]; then
echo "\033[1;37mVoice Control Node\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
# Are we IR?
elif [ "$(hostname | grep ir)" ]; then
echo "\033[1;37mInfared Control Node\033[0m on \033[1;31mRaspberry Pi\033[0m hardware" >> $TMPFILE
# Otherwise, we're generic
else
echo "\033[1;37mGeneric server\033[0m on \033[1;31m$(/usr/sbin/dmidecode | grep -A1 'Base Board Information' | tail -1 | awk -F':' '{print $2}' | tr -s ' ' | sed 's/^ //' )\033[0m hardware" >> $TMPFILE
fi
fi
echo "> $(/bin/uname -srvmo)" >> $TMPFILE
mv $TMPFILE $TGTFILE || rm $TMPFILE
chmod 644 $TGTFILE