MOTDs32/install.sh
2020-05-18 20:10:19 +02:00

446 lines
14 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
#
# MOTDs32 installation instructions
# ==================================
#
# (2017) New project MOTDs32 Customized by Erreur32
# Version 0.0.5
#
# https://gitlab.echosystem.fr/Erreur32/MOTDs32
#
# ,--. ,--. ,-----. ,--------.,------. ,----. ,---.
# | `.' |' .-. ''--. .--'| .-. \ ,---. '.-. |'.-. \
# | |'.'| || | | | | | | | \ :( .-' .' < .-' .'
# | | | |' '-' ' | | | '--' /.-' `)/'-' |/ '-.
# `--' `--' `-----' `--' `-------' `----' `----' '-----'
#
# | + |
#
# MOTDstat is dynamicaly refreshing the /etc/motd file with current informations
# about system status and usage.
#
# Copyright 2017 🅴🆁🆁🅴🆄🆁32
# original project: Pavol Krigler <pavol.krigler@gelogic.net>
#
# make sur this file is executable +x
################################################################################
#
# Installation
# ============
#
# As root execute this command (the easy way!):
#
# # bash install.sh
#
#
################################################################################
LSB=/usr/bin/lsb_release
## DEBUG
readonly PROGNAME=$(basename $0)
readonly PROGDIR=$(readlink -m $(dirname $0))
readonly PROGDIRSCRIPT="$(readlink -m $(dirname $0))/scripts"
readonly ARGS="$@"
## debug
set -e -u -o pipefail
IFS=$'\n\t'
on_error() { echo "Error on or near line $1; exiting with status $2"; exit "$2"; }
trap 'on_error ${LINENO} $?' ERR
################################################################################
# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
crontab -l > $PROGDIR/crontab.backup
pathscript32="$(cd "$(dirname "$0")" && pwd)"
cronmotd="*/5 * * * * /usr/bin/motds32 -g >/dev/null 2>&1"
## clean terminal
BG_BLUE="$(tput setab 4)"
BG_BLACK="$(tput setab 0)"
FG_GREEN="$(tput setaf 2)"
FG_WHITE="$(tput setaf 7)"
# Save screen
tput smcup
# Display menu until selection == 0
#while [[ $REPLY != 0 ]]; do
while [[ $ARGS != 0 ]]; do
echo -n ${BG_BLACK}${FG_WHITE}
clear
echo -e "\e[33;3m"
cat <<- "EOFMO"
| + |
EOFMO
echo -e "\e[32m"
cat <<- "EOFMO2"
,--. ,--. ,-----. ,--------.,------. ,----. ,---.
| `.' |' .-. ''--. .--'| .-. \ ,---. '.-. |'.-. \
| |'.'| || | | | | | | | \ :( .-' .' ; .-' .'
| | | |' '-' ' | | | '--' /.-' `)/'-' |/ '-.
`--' `--' `-----' `--' `-------' `----' `----' '-----'
By
EOFMO2
echo -e "\e[90m # MOTDs32 is dynamicaly refreshing the /etc/motd file with current informations"
echo -e "\e[90m # about system status and usage."
echo -e "\n\e[34m Check dependencies... \n"
check_depend(){
# Check installed
if [ -f "/usr/sbin/sendmail" ]
then
echo -e " \e[34m- Posfix \e[32m✔ installed."
else
echo -e " \e[34m- Select option 1 \e[91m Missing package !!"
fi
if [ -f "/usr/share/build-essential/essential-packages-list" ]
then
echo -e " \e[34m- build-dep \e[32m✔ installed."
else
echo -e " \e[34m- build-dep \e[1;31mSelect option 1 \e[91m Missing package !!"
fi
# Check files
if hash figlet 2>/dev/null; then
echo -e " \e[34m- Figlet \e[32m✔ installed."
else
echo -e " \e[34m- Figlet \e[1;31m Select option 1 \e[91m Missing package !!"
fi
if hash ntpd 2>/dev/null; then
echo -e " \e[34m- NTP \e[32m✔ installed."
else
echo -e " \e[34m- NTP \e[1;31mSelect option 1 \e[91m Missing package !!"
fi
if hash make 2>/dev/null; then
echo -e " \e[34m- build-essential \e[32m✔ installed."
else
echo -e " \e[34m- build-essential \e[1;31mSelect option 1 \e[91m Missing package !!"
fi
}
# Check dependenciess
check_depend || echo -e "\e[34m Check required dependencies ! (need to be installed)"
Check_install_package(){
echo -e " \e[32m install missing package ...\e[0m\n"
apt-get install --allow-unauthenticated -y build-essential ntp figlet postfix sasl2-bin
echo -e "\n\e[34m - apt-get installation build-essential ntp figlet \e[0m>> Succesfull"
if [ -f "/usr/bin/motds32" ]
then
echo -e "\n\e[34m - Make file \e[0m>> found.\e[0m\n"
#make install
#echo -e "\n\e[34m - REMake file done.\e[0m\n"
else
echo -e "\n\e[92m -Building binary \e[0m\n"
make install
echo -e "\n\e[34m - Make file done.\e[0m\n"
fi
echo -e "\e[92m"
if [ `grep -c /etc/motd ~/.bashrc` == 0 ]
then
echo -e " \e[31m code bash missing\e[0m"
echo "cat /etc/motd" >> ~/.bashrc
echo "/etc/motds32/Stats32" >> ~/.bashrc
echo -e "\e[92m - Code bash \e[0madded.\n"
else
grepmot=`grep '/etc/motd' ~/.bashrc`
# echo -e " \e[1;30m Code bash found: \e[0m>>\e[0m $grepmot \e[0m<<\n"
echo -e " -->\e[34m Code bash: \e[92mOK\e[0m"
fi
# Check if MOTDs32 is already add
if test ! -d /etc/motds32; then mkdir -p /etc/motds32; fi
if [ -f "/etc/motds32/Stats32" ]
then
echo -e " -->\e[34m Stats32 \e[92mOK\e[0m"
cp -f Stats32 /etc/motds32/Stats32
else
cp -f Stats32 /etc/motds32/Stats32
echo -e " -->\e[34m Stats32 \e[92mINSTALLED\e[0m"
fi
# Copy font figlet
if [ -f "/usr/share/figlet" ]
then
echo -e " -->\e[31m figlet not FOUND\e[0m"
else
cp -Rf fonts/chunky.flf /usr/share/figlet/
echo -e " -->\e[34m figlet&font \e[92mOK\e[0m"
fi
# Check if motd is installed correctly
if [ -f "/usr/bin/motd" ]
then
echo -e " -->\e[34m motd check \e[92mOK\e[0m\n"
else
ln -s /usr/bin/motds32 /usr/bin/motd
echo -e " -->\e[34m motd bin \e[92mOK\e[0m\n"
fi
## Install Crontab
if crontab -l | grep -q '/usr/bin/motds32'; then
echo -e " \e[34m -Cron \e[0m>> already added.\e[0m"
else
(crontab -l ; echo $cronmotd)| crontab -u root -
# (crontab -l ; echo "*/5 * * * * /usr/bin/motds32 -g >/dev/null 2>&1")| crontab -
echo -e "\e[34m - Cron added.\e[0m"
fi
## Generate first stats
if test -f /usr/bin/motds32; then /usr/bin/motds32 -g; fi
echo -e "\n\n\e[34m \e[92m PACKAGE completed!\e[0m \n\n\n You can install \e[1;33m \n\e[92m Use: \033[1;30m option 2\e[0m \n\e[0m\n"
printf "\n \e[1;33m (Press 0 to exit) Or any key to go back."
}
#Check_install_package
Motds32_install(){
echo -n " Git " ; cd $pathscript32 && git pull ; echo -e "\n\e[92m" ;
grepmot="cat /etc/motd"
# if [ `grep -c "cat /etc/motd" ~/.bashrc` == 0 ]
if [ $(grep -c "cat /etc/motd" ~/.bashrc) == 0 ]
then
echo -e "\e[31m code bash missing\e[0m"
echo $grepmot >> ~/.bashrc
echo "/etc/motds32/Stats32" >> ~/.bashrc
echo -e "\e[92m - Code bash \e[0madded.\n"
else
# sed -i '/cat \/etc\/motd/d' ~/.bashrc
# grepmot=$(grep "/etc/motd" ~/.bashrc)
echo -e " \e[32;1m Code bash found: \e[0m>>\e[0m $grepmot \e[0m<<\n"
echo -e " -->\e[34m Code bash: \e[92mOK\e[0m"
fi
# Copy font figlet
if [ -f "/usr/share/figlet" ]
then
echo -e " -->\e[31m figlet not FOUND\e[0m"
else
cp -Rf fonts/chunky.flf /usr/share/figlet/
echo -e " -->\e[34m figlet&font \e[92mOK\e[0m"
fi
# Check if MOTDs32 is already add
if test ! -d /etc/motds32; then mkdir -p /etc/motds32; fi
if [ -f "/usr/bin/motds32" ]
then
echo -e "\n\e[34m - Make file \e[0m>> found.\e[0m\n"
#make install -- see update
#echo -e "\n\e[34m - REMake file done.\e[0m\n"
else
echo -e "\n\e[92m -Building binary \e[0m\n"
make install
echo -e "\n\e[34m - Make file done.\e[0m\n"
fi
if [ -f "/etc/motds32/Stats32" ]
then
echo -e " -->\e[34m Stats32 \e[92mOK\e[0m"
cp -f Stats32 /etc/motds32/Stats32
else
cp -f Stats32 /etc/motds32/Stats32
echo -e " -->\e[34m Stats32 \e[92mINSTALLED\e[0m"
fi
# Copy font figlet
if [ -f "/usr/share/figlet" ]
then
echo -e " -->\e[31m figlet not FOUND\e[0m"
else
cp -Rf fonts/chunky.flf /usr/share/figlet/
echo -e " -->\e[34m figlet&font \e[92mOK\e[0m"
fi
# Check if motd is installed correctly
if [ -f "/usr/bin/motd" ]
then
echo -e " -->\e[34m motd check \e[92mOK\e[0m\n"
else
ln -s /usr/bin/motds32 /usr/bin/motd
echo -e " -->\e[34m motd bin \e[92mOK\e[0m\n"
fi
## Install Crontab
if crontab -l | grep -q '/usr/bin/motds32'; then
echo -e "\e[34m - Cron \e[0m>> already added.\e[0m"
/usr/bin/motds32 -g
else
(crontab -l ; echo $cronmotd)| crontab -u root -
# (crontab -l ; echo "*/5 * * * * /usr/bin/motds32 -g >/dev/null 2>&1")| crontab -
echo -e "\e[34m - Cron added.\e[0m"
fi
## Generate first stats
# if test -f /usr/bin/motds32; then /usr/bin/motds32 -g; fi
echo -e "\n\n\n Help? Use: \n \033[1;30m /usr/bin/motds32\e[0m \n or \033[1;30m\n motd\e[0m\n"
echo -e "\n\n\e[34m \e[92m completed!\e[0m"
printf "\n \e[1;33m (Press any key to exit.)\e[0m"
}
# Motds32_install
Motds32_update(){
echo -n " Git " ; cd $pathscript32 && git pull ; echo -e "\n\e[92m" ;
if [ $(grep -c "cat /etc/motd" ~/.bashrc) == 0 ]
then
echo -e "\e[31m code bash missing\e[0m"
echo $grepmot >> ~/.bashrc
echo "/etc/motds32/Stats32" >> ~/.bashrc
echo -e "\e[92m - Code bash \e[0madded.\n"
else
# sed -i '/cat \/etc\/motd/d' ~/.bashrc
# grepmot=$(grep "/etc/motd" ~/.bashrc)
echo -e " \e[32;1m Code bash found: \e[0m>>\e[0m $grepmot \e[0m<<\n"
echo -e " -->\e[34m Code bash: \e[92mOK\e[0m"
fi
if [ -f "/usr/bin/motds32" ]
then
echo -e "\n\e[34m - Make file \e[0m>> update.\e[0m\n"
make install > /dev/null
motd -g
echo -e "\n\e[32;1m - Update binary done.\e[0m\n"
echo -e "\n\e[1;33m (Press any key.)\e[0m"
else
echo -e "\e[32;4m - Make install first !\e[0m\n"
echo -e "\n\e[1;33m (Press any key.)\e[0m"
fi
if [ -f "/etc/motds32/Stats32" ]
then
echo -e " -->\e[34m Stats32 \e[92mOK\e[0m"
cp -f $pathscript32/Stats32 /etc/motds32/Stats32
else
cp -f $pathscript32/Stats32 /etc/motds32/Stats32
echo -e " -->\e[32;4m Stats32 \e[92mOK\e[0m"
fi
# generate new stat
# motd -g
/usr/bin/motds32 -g
}
# Motds32_update
Motds32_remove(){
echo -e "\n\e[34m Unistall of in progress... \e[0m\n"
## remove file and directory
# make uninstall
## remove cron
if crontab -l | grep -q '/usr/bin/motds32'
then
echo -e "\n \e[94m Cron localized\n"
crontab -l | grep -v $cronmotd| crontab -u root -
# crontab -l | grep -v "*/5 * * * * /usr/bin/motds32 -g >/dev/null 2>&1" | crontab -u root -
echo -e " \e[35m Cron removed\n"
else
echo -e "\n \e[35m Cron OK\n"
fi
if [ `grep -c motd ~/.bashrc` == 0 ]
then
echo -e " \e[35m Code bash removed"
else
echo -e " \e[34mCode bash found"
sed -i '/cat \/etc\/motd/d' ~/.bashrc
sed -i '\/etc\/motds32\/Stats32/d' ~/.bashrc
echo -e "\e[92m Code .bashrc removed.\e[0m"
grep -n '/etc/motd' ~/.bashrc
echo -e "\e[0m"
fi
make uninstall >/dev/null
if [ -d "/etc/motds32" ]
then
rm /etc/motds32/ -Rf
fi
if [ -f "/var/cache/motds32" ]
then
rm /usr/bin/motd /var/cache/motds32/ -Rf
fi
if [ -f "/etc/motd.orig" ]
then
mv /etc/motd.orig /etc/motd
fi
echo -e "\n\e[35m Motds32 Files... Removed, all good!"
# if test ! -e /etc/motd.orig; then mv /etc/motd.orig /etc/motd; fi
# if test ! -d /var/cache/motds32; then rm /usr/bin/motd /var/cache/motds32/ -Rf; fi
echo -e "\n\e[92m Script has been completly removed \e[0m"
printf "\n\n \e[1;33m (Press any key.)\e[0m"
}
echo -e "\n\e[32;3m YOU CAN SKIP (auto) install if you want"
echo -e "\n\e[92m Please Select:"
echo -e " 1. \e[97m(auto) Install Missing Package\e[92m"
echo -e " 2. \e[97mInstallation MOTDs32 script\e[92m"
echo -e " 3. \e[97mUpdate MOTDs32 script\e[92m"
echo -e " 4. \e[97mUninstall completly MOTDs32 script\e[92m"
echo -e " 0. \e[97m(Enter or any key) to Quit\n\e[33;3m"
read -p " Enter selection [0-3] or (Enter) to Quit > " selection
echo -e "\e[97m"
#check_depend
# Clear area beneath menu
tput cup 10 0
echo -n ${FG_GREEN}
tput ed
tput cup 11 0
case $selection in
1) Check_install_package
;;
2) Motds32_install
;;
3) Motds32_update
#echo -e "\n Installation \e[34mMOTDs32 terminated.\e[0m\n Help? Use: \n \033[1;30m /usr/bin/motds32\n"
;;
4) Motds32_remove
;;
0) break
;;
*) break
;;
esac
read -n 1
# echo -e "\n\n\e[34m \e[92m completed!\e[0m \n\n\n Help? Use: \n \033[1;30m /usr/bin/motds32\e[0m \n or \033[1;30m\n motd\e[0m\n"
# printf "\n \e[1;33m (Press any key to exit.)\e[0m"
done
# Restore screen
tput rmcup
echo -e " Installation \e[34mMOTDs32 terminated.\e[0m\n Help? Use: \n \033[1;30m /usr/bin/motds32\n"