446 lines
14 KiB
Bash
Executable File
446 lines
14 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
#
|
||
# MOTDs32 installation instructions
|
||
# ==================================
|
||
#
|
||
# (2017) New project MOTDs32 Customized by Erreur32
|
||
# Version 0.0.5
|
||
#
|
||
# https://gitlab.echosystem.fr/Erreur32/MOTDs32
|
||
#
|
||
# ,--. ,--. ,-----. ,--------.,------. ,----. ,---.
|
||
# | `.' |' .-. ''--. .--'| .-. \ ,---. '.-. |'.-. \
|
||
# | |'.'| || | | | | | | | \ :( .-' .' < .-' .'
|
||
# | | | |' '-' ' | | | '--' /.-' `)/'-' |/ '-.
|
||
# `--' `--' `-----' `--' `-------' `----' `----' '-----'
|
||
#
|
||
# | + Stats32 |
|
||
#
|
||
# 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"
|
||
|
||
Installation of MOTDs32 | + Stats32 |
|
||
|
||
EOFMO
|
||
echo -e "\e[32m"
|
||
cat <<- "EOFMO2"
|
||
,--. ,--. ,-----. ,--------.,------. ,----. ,---.
|
||
| `.' |' .-. ''--. .--'| .-. \ ,---. '.-. |'.-. \
|
||
| |'.'| || | | | | | | | \ :( .-' .' ; .-' .'
|
||
| | | |' '-' ' | | | '--' /.-' `)/'-' |/ '-.
|
||
`--' `--' `-----' `--' `-------' `----' `----' '-----'
|
||
|
||
By Erreur32
|
||
|
||
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 MOTDs32 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 Installation PACKAGE completed!\e[0m \n\n\n You can install \e[1;33m MOTDs32\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 Installation of MOTDs32 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 MOTDs32 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 MOTDs32 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 Installation of MOTDs32 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"
|
||
|