commit c6ba6eb8c2cceb0ae6697432aab36a4741742e06 Author: Mateusz Chochół Date: Wed Oct 31 17:28:24 2018 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f69a2a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# BetterMOTD diff --git a/bmotd.sh b/bmotd.sh new file mode 100755 index 0000000..c7333e6 --- /dev/null +++ b/bmotd.sh @@ -0,0 +1,252 @@ +#!/bin/bash +# +# +# + +# Config +MOTD="/etc/motd" +INSTPATH="/etc/bmotd.sh" + +main () { + # Gather information + HOSTNAME=$(hostname -s) + FQDN=$(hostname -f) + OSID=$(cat /etc/*-release 2>/dev/null | awk -F'=' '/^ID=/ { print $2; count++ } END { if (!count) print "Unknown" }') + KERNEL=$(uname -r) + EXTERNAL=$(dig TXT +short o-o.myaddr.l.google.com @ns1.google.com | tr -d '"') + + # Get number of updates awaiting + test -f ~/.pisscache || PKG_REFRESH=1 + [[ $(date +%H%M) == "1510" ]] && PKG_REFRESH=1 + if [ $PKG_REFRESH ]; then + echo "odswiezam" + case "$OSID" in + debian|osmc|linuxmint) + PKG_NU=$(apt-get --just-print upgrade | awk '/^[0-9]/ { print $1; exit }') + ;; + arch|archarm) + PKG_NU=$(pacman -Qu | wc -l) + ;; + *) + PKG_NU="-1" + esac + echo $PKG_NU > ~/.pisscache + fi + PKG_NU=$(cat ~/.pisscache) + + # Test if /etc/motd writable and run motd generator if so + test -w $MOTD && motdGen + + # check arguments + case "$1" in + enable) + echo -e "\nEnabling bmotd.sh" + + # check if crontab present + command -v crontab >/dev/null 2>&1 || ( echo "Error: couldn't find crontab. Exiting..."; exit 1) + + # Check if script is already in crontab, if not add itself + CRON_ENTRY="* * * * * $(realpath "$0")" + crontab -l 2>/dev/null | grep -q "$CRON_ENTRY" || ( crontab -l 2>/dev/null; echo "$CRON_ENTRY" ) | crontab - + + echo -e "Success! Check it yourself with crontab -l" + + # Check if motd writable + test -w $MOTD || echo "Unable to write $MOTD . To enable update permissions." + + echo "Exiting." + exit 0 + ;; + disable) + echo -e "\nDisabling PISS" + ( crontab -l 2>/dev/null | egrep -v '.*piss\.sh$'; ) | crontab - + exit 0 + ;; + esac + +} + + +function prettyPrint { + declare -A a + height=5 + a["32,0"]='$';a["32,1"]='$';a["32,2"]='$';a["32,3"]='$';a["32,4"]='$'; + a["33,0"]=' _ ';a["33,1"]='| |';a["33,2"]='|_|';a["33,3"]='(_)';a["33,4"]=' '; + a["34,0"]=' _ _ ';a["34,1"]='( | )';a["34,2"]=' V V ';a["34,3"]=' $ ';a["34,4"]=' '; + a["35,0"]=' _ _ ';a["35,1"]=' _| | |_ ';a["35,2"]='|_ . _|';a["35,3"]='|_ _|';a["35,4"]=' |_|_| '; + a["36,0"]=' ';a["36,1"]=' ||_';a["36,2"]='(_-<';a["36,3"]='/ _/';a["36,4"]=' || '; + a["37,0"]=' _ __ ';a["37,1"]='(_)/ / ';a["37,2"]=' / /_ ';a["37,3"]=' /_/(_)';a["37,4"]=' '; + a["38,0"]=' __ ';a["38,1"]='/ _|___ ';a["38,2"]='> _|_ _|';a["38,3"]='\_____| ';a["38,4"]=' '; + a["39,0"]=' _ ';a["39,1"]='( )';a["39,2"]='|/ ';a["39,3"]=' $ ';a["39,4"]=' '; + a["40,0"]=' __';a["40,1"]=' / /';a["40,2"]='| | ';a["40,3"]='| | ';a["40,4"]=' \_\'; + a["41,0"]='__ ';a["41,1"]='\ \ ';a["41,2"]=' | |';a["41,3"]=' | |';a["41,4"]='/_/ '; + a["42,0"]=' ';a["42,1"]='_/\_';a["42,2"]='> <';a["42,3"]=' \/ ';a["42,4"]=' '; + a["43,0"]=' _ ';a["43,1"]=' _| |_ ';a["43,2"]='|_ _|';a["43,3"]=' |_| ';a["43,4"]=' '; + a["44,0"]=' ';a["44,1"]=' ';a["44,2"]=' _ ';a["44,3"]='( )';a["44,4"]='|/ '; + a["45,0"]=' ';a["45,1"]=' ___ ';a["45,2"]='|___|';a["45,3"]=' $ ';a["45,4"]=' '; + a["46,0"]=' ';a["46,1"]=' ';a["46,2"]=' _ ';a["46,3"]='(_)';a["46,4"]=' '; + a["47,0"]=' __';a["47,1"]=' / /';a["47,2"]=' / / ';a["47,3"]='/_/ ';a["47,4"]=' '; + a["48,0"]=' __ ';a["48,1"]=' / \ ';a["48,2"]='| () |';a["48,3"]=' \__/ ';a["48,4"]=' '; + a["49,0"]=' _ ';a["49,1"]='/ |';a["49,2"]='| |';a["49,3"]='|_|';a["49,4"]=' '; + a["50,0"]=' ___ ';a["50,1"]='|_ )';a["50,2"]=' / / ';a["50,3"]='/___|';a["50,4"]=' '; + a["51,0"]=' ____';a["51,1"]='|__ /';a["51,2"]=' |_ \';a["51,3"]='|___/';a["51,4"]=' '; + a["52,0"]=' _ _ ';a["52,1"]='| | | ';a["52,2"]='|_ _|';a["52,3"]=' |_| ';a["52,4"]=' '; + a["53,0"]=' ___ ';a["53,1"]='| __|';a["53,2"]='|__ \';a["53,3"]='|___/';a["53,4"]=' '; + a["54,0"]=' __ ';a["54,1"]=' / / ';a["54,2"]='/ _ \';a["54,3"]='\___/';a["54,4"]=' '; + a["55,0"]=' ____ ';a["55,1"]='|__ |';a["55,2"]=' / / ';a["55,3"]=' /_/ ';a["55,4"]=' '; + a["56,0"]=' ___ ';a["56,1"]='( _ )';a["56,2"]='/ _ \';a["56,3"]='\___/';a["56,4"]=' '; + a["57,0"]=' ___ ';a["57,1"]='/ _ \';a["57,2"]='\_, /';a["57,3"]=' /_/ ';a["57,4"]=' '; + a["58,0"]=' _ ';a["58,1"]='(_)';a["58,2"]=' _ ';a["58,3"]='(_)';a["58,4"]=' '; + a["59,0"]=' _ ';a["59,1"]='(_)';a["59,2"]=' _ ';a["59,3"]='( )';a["59,4"]='|/ '; + a["60,0"]=' __';a["60,1"]=' / /';a["60,2"]='< < ';a["60,3"]=' \_\';a["60,4"]=' '; + a["61,0"]=' ';a["61,1"]=' ___ ';a["61,2"]='|___|';a["61,3"]='|___|';a["61,4"]=' '; + a["62,0"]='__ ';a["62,1"]='\ \ ';a["62,2"]=' > >';a["62,3"]='/_/ ';a["62,4"]=' '; + a["63,0"]=' ___ ';a["63,1"]='|__ \';a["63,2"]=' /_/';a["63,3"]=' (_) ';a["63,4"]=' '; + a["64,0"]=' ____ ';a["64,1"]=' / __ \ ';a["64,2"]='/ / _` |';a["64,3"]='\ \__,_|';a["64,4"]=' \____/ '; + a["65,0"]=' _ ';a["65,1"]=' /_\ ';a["65,2"]=' / _ \ ';a["65,3"]='/_/ \_\';a["65,4"]=' '; + a["66,0"]=' ___ ';a["66,1"]='| _ )';a["66,2"]='| _ \';a["66,3"]='|___/';a["66,4"]=' '; + a["67,0"]=' ___ ';a["67,1"]=' / __|';a["67,2"]='| (__ ';a["67,3"]=' \___|';a["67,4"]=' '; + a["68,0"]=' ___ ';a["68,1"]='| \ ';a["68,2"]='| |) |';a["68,3"]='|___/ ';a["68,4"]=' '; + a["69,0"]=' ___ ';a["69,1"]='| __|';a["69,2"]='| _| ';a["69,3"]='|___|';a["69,4"]=' '; + a["70,0"]=' ___ ';a["70,1"]='| __|';a["70,2"]='| _| ';a["70,3"]='|_| ';a["70,4"]=' '; + a["71,0"]=' ___ ';a["71,1"]=' / __|';a["71,2"]='| (_ |';a["71,3"]=' \___|';a["71,4"]=' '; + a["72,0"]=' _ _ ';a["72,1"]='| || |';a["72,2"]='| __ |';a["72,3"]='|_||_|';a["72,4"]=' '; + a["73,0"]=' ___ ';a["73,1"]='|_ _|';a["73,2"]=' | | ';a["73,3"]='|___|';a["73,4"]=' '; + a["74,0"]=' _ ';a["74,1"]=' _ | |';a["74,2"]='| || |';a["74,3"]=' \__/ ';a["74,4"]=' '; + a["75,0"]=' _ __';a["75,1"]='| |/ /';a["75,2"]='| '"'"' < ';a["75,3"]='|_|\_\';a["75,4"]=' '; + a["76,0"]=' _ ';a["76,1"]='| | ';a["76,2"]='| |__ ';a["76,3"]='|____|';a["76,4"]=' '; + a["77,0"]=' __ __ ';a["77,1"]='| \/ |';a["77,2"]='| |\/| |';a["77,3"]='|_| |_|';a["77,4"]=' '; + a["78,0"]=' _ _ ';a["78,1"]='| \| |';a["78,2"]='| .` |';a["78,3"]='|_|\_|';a["78,4"]=' '; + a["79,0"]=' ___ ';a["79,1"]=' / _ \ ';a["79,2"]='| (_) |';a["79,3"]=' \___/ ';a["79,4"]=' '; + a["80,0"]=' ___ ';a["80,1"]='| _ \';a["80,2"]='| _/';a["80,3"]='|_| ';a["80,4"]=' '; + a["81,0"]=' ___ ';a["81,1"]=' / _ \ ';a["81,2"]='| (_) |';a["81,3"]=' \__\_\';a["81,4"]=' '; + a["82,0"]=' ___ ';a["82,1"]='| _ \';a["82,2"]='| /';a["82,3"]='|_|_\';a["82,4"]=' '; + a["83,0"]=' ___ ';a["83,1"]='/ __|';a["83,2"]='\__ \';a["83,3"]='|___/';a["83,4"]=' '; + a["84,0"]=' _____ ';a["84,1"]='|_ _|';a["84,2"]=' | | ';a["84,3"]=' |_| ';a["84,4"]=' '; + a["85,0"]=' _ _ ';a["85,1"]='| | | |';a["85,2"]='| |_| |';a["85,3"]=' \___/ ';a["85,4"]=' '; + a["86,0"]='__ __';a["86,1"]='\ \ / /';a["86,2"]=' \ V / ';a["86,3"]=' \_/ ';a["86,4"]=' '; + a["87,0"]='__ __';a["87,1"]='\ \ / /';a["87,2"]=' \ \/\/ / ';a["87,3"]=' \_/\_/ ';a["87,4"]=' '; + a["88,0"]='__ __';a["88,1"]='\ \/ /';a["88,2"]=' > < ';a["88,3"]='/_/\_\';a["88,4"]=' '; + a["89,0"]='__ __';a["89,1"]='\ \ / /';a["89,2"]=' \ V / ';a["89,3"]=' |_| ';a["89,4"]=' '; + a["90,0"]=' ____';a["90,1"]='|_ /';a["90,2"]=' / / ';a["90,3"]='/___|';a["90,4"]=' '; + a["91,0"]=' __ ';a["91,1"]='| _|';a["91,2"]='| | ';a["91,3"]='| | ';a["91,4"]='|__|'; + a["92,0"]='__ ';a["92,1"]='\ \ ';a["92,2"]=' \ \ ';a["92,3"]=' \_\';a["92,4"]=' '; + a["93,0"]=' __ ';a["93,1"]='|_ |';a["93,2"]=' | |';a["93,3"]=' | |';a["93,4"]='|__|'; + a["94,0"]=' /\ ';a["94,1"]='|/\|';a["94,2"]=' $ ';a["94,3"]=' $ ';a["94,4"]=' '; + a["95,0"]=' ';a["95,1"]=' ';a["95,2"]=' ';a["95,3"]=' ___ ';a["95,4"]='|___|'; + a["96,0"]=' _ ';a["96,1"]='( )';a["96,2"]=' \|';a["96,3"]=' $ ';a["96,4"]=' '; + a["97,0"]=' ';a["97,1"]=' __ _ ';a["97,2"]='/ _` |';a["97,3"]='\__,_|';a["97,4"]=' '; + a["98,0"]=' _ ';a["98,1"]='| |__ ';a["98,2"]='| '"'"'_ \';a["98,3"]='|_.__/';a["98,4"]=' '; + a["99,0"]=' ';a["99,1"]=' __ ';a["99,2"]='/ _|';a["99,3"]='\__|';a["99,4"]=' '; + a["100,0"]=' _ ';a["100,1"]=' __| |';a["100,2"]='/ _` |';a["100,3"]='\__,_|';a["100,4"]=' '; + a["101,0"]=' ';a["101,1"]=' ___ ';a["101,2"]='/ -_)';a["101,3"]='\___|';a["101,4"]=' '; + a["102,0"]=' __ ';a["102,1"]=' / _|';a["102,2"]='| _|';a["102,3"]='|_| ';a["102,4"]=' '; + a["103,0"]=' ';a["103,1"]=' __ _ ';a["103,2"]='/ _` |';a["103,3"]='\__, |';a["103,4"]='|___/ '; + a["104,0"]=' _ ';a["104,1"]='| |_ ';a["104,2"]='| '"'"' \ ';a["104,3"]='|_||_|';a["104,4"]=' '; + a["105,0"]=' _ ';a["105,1"]='(_)';a["105,2"]='| |';a["105,3"]='|_|';a["105,4"]=' '; + a["106,0"]=' _ ';a["106,1"]=' (_)';a["106,2"]=' | |';a["106,3"]=' _/ |';a["106,4"]='|__/ '; + a["107,0"]=' _ ';a["107,1"]='| |__';a["107,2"]='| / /';a["107,3"]='|_\_\';a["107,4"]=' '; + a["108,0"]=' _ ';a["108,1"]='| |';a["108,2"]='| |';a["108,3"]='|_|';a["108,4"]=' '; + a["109,0"]=' ';a["109,1"]=' _ __ ';a["109,2"]='| '"'"' \ ';a["109,3"]='|_|_|_|';a["109,4"]=' '; + a["110,0"]=' ';a["110,1"]=' _ _ ';a["110,2"]='| '"'"' \ ';a["110,3"]='|_||_|';a["110,4"]=' '; + a["111,0"]=' ';a["111,1"]=' ___ ';a["111,2"]='/ _ \';a["111,3"]='\___/';a["111,4"]=' '; + a["112,0"]=' ';a["112,1"]=' _ __ ';a["112,2"]='| '"'"'_ \';a["112,3"]='| .__/';a["112,4"]='|_| '; + a["113,0"]=' ';a["113,1"]=' __ _ ';a["113,2"]='/ _` |';a["113,3"]='\__, |';a["113,4"]=' |_|'; + a["114,0"]=' ';a["114,1"]=' _ _ ';a["114,2"]='| '"'"'_|';a["114,3"]='|_| ';a["114,4"]=' '; + a["115,0"]=' ';a["115,1"]=' ___';a["115,2"]='(_-<';a["115,3"]='/__/';a["115,4"]=' '; + a["116,0"]=' _ ';a["116,1"]='| |_ ';a["116,2"]='| _|';a["116,3"]=' \__|';a["116,4"]=' '; + a["117,0"]=' ';a["117,1"]=' _ _ ';a["117,2"]='| || |';a["117,3"]=' \_,_|';a["117,4"]=' '; + a["118,0"]=' ';a["118,1"]='__ __';a["118,2"]='\ V /';a["118,3"]=' \_/ ';a["118,4"]=' '; + a["119,0"]=' ';a["119,1"]='__ __ __';a["119,2"]='\ V V /';a["119,3"]=' \_/\_/ ';a["119,4"]=' '; + a["120,0"]=' ';a["120,1"]='__ __';a["120,2"]='\ \ /';a["120,3"]='/_\_\';a["120,4"]=' '; + a["121,0"]=' ';a["121,1"]=' _ _ ';a["121,2"]='| || |';a["121,3"]=' \_, |';a["121,4"]=' |__/ '; + a["122,0"]=' ';a["122,1"]=' ___';a["122,2"]='|_ /';a["122,3"]='/__|';a["122,4"]=' '; + + str=$1 + strarr=() + for (( i=0; i<${#str}; i++ )); do + strarr+=($(printf '%d\n' "'${str:$i:1}")) + done + for ((i=0;i/dev/null 2>&1 && parse_ip + command -v ip >/dev/null 2>&1 || parse_ifconfig + + clear > $MOTD # to clear the screen when showing up + echo -e "$G" >> $MOTD + prettyPrint $HOSTNAME >> $MOTD + echo -e " $W$LBT" >> $MOTD + echo -e " $W║$G • FQDN...............$W: $P $FQDN" >> $MOTD + echo -e " $W║$G • Last Login.........$W: $P $LASTLOGIN" >> $MOTD + echo -e " $W║$G • Pkg to update......$W: $P $PKG_NU" >> $MOTD + echo -e " $W║$G • Uptime,Load........$W: $P $UPTIME_EXT" >> $MOTD + echo -e " $W║$G • Kernel.............$W: $P $KERNEL" >> $MOTD + echo -e " $W║$G • External IP........$W: $P $EXTERNAL" >> $MOTD + for (( i=0; i<${#arr[@]}; i++ )); do + if [ $i -eq 0 ]; then + echo -e "$W ║$G • Network Interfaces.$W: $P ${arr[$i]}" >> $MOTD + else + echo -e "$W ║$G $P ${arr[$i]}" >> $MOTD + fi + done + echo -e " $W$LBB" >> $MOTD + echo -e "$X" >> $MOTD +} + + +main "$@" +