Files
LinUPx/linupx-scripts.sh

538 lines
14 KiB
Bash
Executable File

#!/usr/bin/env bash
# LinUPx - Linux Update Scripts
action="$1"
FOLDER='/opt/idssys/linupx'
VERS='5.03292019'
if ! grep -q "RemoteSyslogServer" /opt/idssys/settings/linupx.conf; then
echo -e "\nRemoteSyslogServer=10.10.10.10" >> /opt/idssys/settings/linupx.conf
fi
if [ -d /opt/idssys/LinUPx ]; then
mv /opt/LinUPx /opt/idssys/linupx
rm -f /usr/local/bin/runup
ln -s /opt/idssys/linupx/run.sh /usr/local/bin/runup
if [ -f /opt/idssys/linupx/settings.conf ]; then
if [ ! -d /opt/idssys/settings ]; then
mkdir /opt/idssys/settings
fi
mv /opt/idssys/linupx/settings.conf /opt/idssys/settings/linupx.conf
fi
echo "Program has been updated, please re-run"
exit 0
fi
if [ -f /opt/idssys/linupx/settings.conf ]; then
if [ ! -d /opt/idssys/settings ]; then
mkdir /opt/idssys/settings
fi
mv /opt/idssys/linupx/settings.conf /opt/idssys/settings/linupx.conf
fi
if [ ! -d "/opt/idssys/linupx" ]; then
if [ ! -d /opt/idssys ]; then
mkdir /opt/idssys
fi
mv /opt/LinUPx /opt/idssys/linupx
rm -f /usr/local/bin/runup
ln -s /opt/idssys/linupx/run.sh /usr/local/bin/runup
echo "Program has been updated, please re-run"
exit 0
fi
if [ ! -d "/opt/idssys/defaults" ]; then
set -eu
git clone https://git.schroedercity.com/voltron/iDS-Defaults.git /opt/idssys/defaults
fi
source /opt/idssys/settings/linupx.conf
source /opt/idssys/defaults/colors.inc
source /opt/idssys/defaults/default.inc
Color_Off='\033[0m'
Blue='\033[0;34m'
BBlue='\033[1;34m'
Green='\033[0;32m'
LGreen='\033[1;32m'
BOrange='\033[0;33m'
DGray='\033[1;30m'
Red='\033[10;31m'
LRed='\033[1;31m'
######## NEWRELIC REMOVAL ########
if [ -e /etc/apt/sources.list.d/newrelic.list ]; then
$APTFUNC remove -y newrelic-sysmond
rm -f /etc/apt/sources.list.d/newrelic.list
echo -e "${BBlue}NOTICE:${Color_Off} NewRelic Removed."
sleep 5
fi
UPDATE1() {
if [ "$opennms" = true ]; then
sudo apt-mark unhold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
if type yum &>/dev/null; then
$APTFUNC -y update
else
if [ "$useAutoremove" -ne 0 ]; then
AUTOREMOVE
$APTFUNC update
$APTFUNC upgrade -y
AUTOREMOVE
fi
fi
if [ "$opennms" = true ]; then
sudo apt-mark hold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
touch "${FOLDER}/lastrun"
echo ""
echo -e "${Green}Updates have completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
UPDATE2() {
if [ "$opennms" = true ]; then
sudo apt-mark unhold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
if [ "$useAutoremove" -ne 0 ]; then
AUTOREMOVE
$APTFUNC upgrade -y
AUTOREMOVE
fi
if [ "$opennms" = true ]; then
sudo apt-mark hold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
touch "${FOLDER}/lastrun"
echo ""
echo -e "${Green}Updated Upgrades have completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
UPDATE3() {
restart_flag='';
export DEBIAN_FRONTEND="noninteractive"
source /etc/environment
bash /etc/skel/.profile
while getopts 'r' flag; do
case "${flag}" in
r) restart_flag='true' ;;
esac
done
if [ "$autorun_logging" = true ]; then
mv -f /opt/runupdates.log.2 /opt/runupdates.log.3
mv -f /opt/runupdates.log.1 /opt/runupdates.log.2
mv -f /opt/runupdates.log /opt/runupdates.log.1
fi
if type yum &>/dev/null; then
yum -y update &>> /opt/runupdates.log
else
if [ "$opennms" = true ]; then
sudo apt-mark unhold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
if [ "$useAutoremove" -ne 0 ]; then
apt-get -y autoremove &>> /opt/runupdates.log
apt-get update &>> /opt/runupdates.log
apt-get upgrade -y &>> /opt/runupdates.log
apt-get -y autoremove &>> /opt/runupdates.log
fi
if [ "$opennms" = true ]; then
sudo apt-mark hold libopennms-java libopennmsdeps-java opennms-common opennms-db
fi
fi
touch "${FOLDER}/lastrun"
echo ""
echo -e "${Green}Updates have completed${Color_Off}"
if [ "$autorun_restart_after" = true ] || [ "$restart_flag" = true ]; then
echo -e "${BOrange}Rebooting now...${Color_Off}"
sleep 3
/sbin/shutdown -r now
fi
exit 0
}
UPDATE4() {
restart_flag='';
while getopts 'r' flag; do
case "${flag}" in
r) restart_flag='true' ;;
esac
done
if type yum &>/dev/null; then
yum -y update
else
if [ "$useAutoremove" -ne 0 ]; then
apt-get -y autoremove
apt-get update
apt-get upgrade -y
apt-get -y autoremove
fi
fi
touch "${FOLDER}/lastrun"
echo ""
echo -e "${Green}Updates have completed${Color_Off}"
if [ "$autorun_restart_after" = true ] || [ "$restart_flag" = true ]; then
echo -e "${BOrange}Rebooting now...${Color_Off}"
sleep 3
/sbin/shutdown -r now
fi
exit 0
}
DISTUPGRADE() {
if type yum &>/dev/null; then
$APTFUNC upgrade
else
$APTFUNC dist-upgrade
fi
if [ "$useAutoremove" -ne 0 ] && type apt-get &>/dev/null; then
AUTOREMOVE
fi
echo ""
echo -e "${Green}Dist Upgrades has completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
PIPUPGRADE() {
if [ "$EUID" -ne 0 ]; then
sudo pip3 install --upgrade pip
sudo pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U
else
pip3 install --upgrade pip
pip3 freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U
fi
echo ""
echo -e "${Green}Python-Pip Upgrades has completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
AUTOREMOVE() {
if [ "$useAutoremove" -ne 0 ]; then
if [ "$EUID" -ne 0 ]; then
sudo apt-get autoremove
else
apt-get autoremove
fi
fi
}
DRYRUN1() {
if type apt &>/dev/null; then
$APTFUNC update
$APTFUNC list --upgradable
elif type apt-get &>/dev/null; then
$APTFUNC update
$APTFUNC upgrade --dry-run
elif type yum &>/dev/null; then
$APTFUNC check-update
fi
echo ""
echo -e "${Green}Upgrade dry-run has completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
DRYRUN2() {
if type yum &>/dev/null; then
$APTFUNC --obsoletes check-update
else
$APTFUNC dist-upgrade --dry-run
fi
echo ""
echo -e "${Green}Dist-Upgrade dry-run has completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
}
GO_REBOOT() {
read -n 1 -p "Are you sure you wish to reboot (y/N)?" choice
case "$choice" in
[Yy]) if [ "$EUID" -ne 0 ]; then sudo shutdown -r now
else shutdown -r now
fi
echo 'The system is now rebooting...'
sleep 60
exit 0;;
* ) SCRIPT_MENU;;
esac
}
SHUTDOWN() {
read -n 1 -p "Are you sure you wish to shutdown (y/N)?" choice
case "$choice" in
[Yy]) if [ "$EUID" -ne 0 ]; then sudo shutdown -h now
else shutdown -h now
fi
echo 'The system is now shutting down...'
sleep 60
exit 0;;
* ) SCRIPT_MENU;;
esac
}
ENDISASU() {
if [ "$EUID" -ne 0 ]; then sudo dpkg-reconfigure --priority=low unattended-upgrades
else dpkg-reconfigure --priority=low unattended-upgrades
fi
}
EXIT1() {
clear
exit 0
}
WEBMIN_INSTALL() {
read -n 1 -p "Are you sure you wish to install Webmin (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-webmin.sh)
echo ""
echo -e "${Green}Webmin has been Installed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue";;
esac
}
GLANCES_INSTALL() {
read -n 1 -p "Are you sure you wish to install Glances (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-glances.sh)
echo ""
echo -e "${Green}Glances has been Installed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue";;
esac
}
MYSQLBU_INSTALL() {
read -n 1 -p "Are you sure you wish to install MySQL-BU (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-mysqlbu.sh)
echo ""
echo -e "${Green}MySQL-BU has been Installed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue";;
esac
}
X11VNC_INSTALL() {
read -n 1 -p "Are you sure you wish to install x11vnc (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-vnc.sh)
echo ""
echo -e "${Green}x11vnc has been Installed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue";;
esac
}
LINUPX_UNINSTALL() {
read -n 1 -p "Are you sure you wish to remove LinUPx (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/uninstall-linupx.sh)
exit 0;;
esac
}
FW_INSTALL() {
read -n 1 -p "Are you sure you wish to install Filewatcher (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
echo ""
bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-filewatcher.sh)
exit 0;;
esac
}
ENABLE_REMOTESYSLOG(){
read -n 1 -p "Are you sure you wish to enable sending syslogs to ${RemoteSyslogServer} (Y/n)?" choice
case "$choice" in
[Nn]) SCRIPT_MENU;;
* )
echo ""
echo -e "\n\n*.* @${RemoteSyslogServer}:514" >> /etc/rsyslog.d/50-default.conf
service rsyslog restart
SCRIPT_MENU;;
esac
}
PYTHON3UPGRADE(){
read -n 1 -p "Are you sure you wish to upgrade to Python3 (Y/n)?" choice
case "$choice" in
[Nn]) INSTALL_MENU;;
* )
# add-apt-repository -y ppa:deadsnakes/ppa
$APTFUNC install -y python3 python3-pip
/usr/bin/wget -O /root/.bashrc https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/bashrc
echo ""
echo -e "${Green}Python3 Upfgrade has been Completed${Color_Off}"
if [ ${action-x} ]; then exit 0; fi
read -n 1 -s -p "Press any key to continue"
SCRIPT_MENU;;
esac
}
BASHRC_INSTALL(){
echo -e "${Green}Installing root/.bashrc${Color_Off}"
/usr/bin/wget -O /root/.bashrc https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/bashrc
INSTALL_MENU
}
SCRIPT_MENU() {
if [ -f ${FOLDER}/lastrun ]; then
LASTRUND=$(stat -c %y ${FOLDER}/lastrun | cut -d ' ' -f1)
LASTRUNT=$((stat -c %y ${FOLDER}/lastrun | cut -d ' ' -f2) | cut -d '.' -f1)
else
LASTRUND='never'
LASTRUNT=''
fi
while :
do
clear
echo ""
echo -e " ${LGreen}LinUPx - L I N U X U P D A T E S C R I P T S${Color_Off} ${DGray}(ver-${VERS})${Color_Off}"
echo -e "${LGreen}---------------------------------------------------------------------------${Color_Off}"
echo -e "Hostname: ${BBlue}$(hostname -s)${Color_Off}"
echo -e "Domain: ${BBlue}$(hostname -d)${Color_Off}"
echo ""
echo -e "Last run: ${Green}${LASTRUND} ${LASTRUNT}${Color_Off}"
echo "---------------------------------------------------------------------------"
detect_os OS
width=14
printf "%-${width}s: %s\n" "Machine" "${OS[0]}"
printf "%-${width}s: %s\n" "Distribution" "${OS[1]}"
printf "%-${width}s: %s\n" "Derivative" "${OS[2]}"
printf "%-${width}s: %s\n" "Version" "${OS[3]}"
printf "%-${width}s: %s\n" "Codename/Rev" "${OS[4]}"
echo -e "${LGreen}---------------------------------------------------------------------------${Color_Off}"
echo ""
echo " [1] Check for Updates/Upgrades"
echo " [2] Run Updates"
if [ "$ATYPE" != 'yum' ]; then
echo " [3] Run Updates w/o retrieving new repo list"
fi
echo ""
echo " [4] Check for Upgrades with obsoletes enabled"
echo " [5] Run Dist-Upgrade"
echo " [6] Run Python-Pip Upgrades"
echo " [7] Upgrade to Python v3"
echo ""
if [ "$ATYPE" != 'yum' ]; then
echo " [0] Enable/Disable Automatic Security Updates"
echo ""
fi
echo " [I] Installation Scripts"
echo ""
echo " [L] Enable Remote Syslog"
echo " [Config file: RemoteSyslogServer=${RemoteSyslogServer}]"
echo ""
echo " [R] Reboot System"
echo " [S] Shutdown System"
echo " [Q] Quit"
echo ""
echo ""
echo -e -n "${BOrange}Please select an [ActionItem] from above:${Color_Off} "
read -n 1 opt
echo ""
case $opt in
1) DRYRUN1
SCRIPT_MENU;;
2) UPDATE1
SCRIPT_MENU;;
3) UPDATE2
SCRIPT_MENU;;
4) DRYRUN2
SCRIPT_MENU;;
5) DISTUPGRADE
SCRIPT_MENU;;
6) PIPUPGRADE
SCRIPT_MENU;;
7) PYTHON3UPGRADE
SCRIPT_MENU;;
0) ENDISASU
SCRIPT_MENU;;
[Ii]) INSTALL_MENU;;
[Ll]) ENABLE_REMOTESYSLOG;;
[Rr]) GO_REBOOT
SCRIPT_MENU;;
[Ss]) SHUTDOWN
SCRIPT_MENU;;
[Qq]) EXIT1
exit 0;;
*) echo "Thats an invaild option,";
echo "please select a valid option only.";
sleep 1;;
esac
done
}
INSTALL_MENU() {
while :
do
clear
echo ""
echo -e " ${LGreen}LinUPx - L I N U X U P D A T E S C R I P T S${Color_Off} ${DGray}(ver-${VERS})${Color_Off}"
echo -e " ${Green}INSTALLATION SCRIPTS${Color_Off}"
echo -e "${LGreen}---------------------------------------------------------------------------${Color_Off}"
echo -e "Hostname: ${BBlue}$(hostname -s)${Color_Off}"
echo -e "Domain: ${BBlue}$(hostname -d)${Color_Off}"
echo -e "${LGreen}---------------------------------------------------------------------------${Color_Off}"
echo ""
echo " [1] Webmin Install"
echo " [2] Glances Install"
echo " [3] x11vnc Install"
echo " [4] Filewatcher Install"
echo " [5] BySQL-BU Install"
echo ""
echo " [9] Install .bashrc"
echo ""
echo " [0] Remove LinUPx"
echo ""
echo " [B] Back to Update Scripts"
echo " [Q] Quit"
echo ""
echo ""
echo -e -n "${BOrange}Please select an [ActionItem] from above:${Color_Off} "
read -n 1 opt
echo ""
case $opt in
1) WEBMIN_INSTALL
INSTALL_MENU;;
2) GLANCES_INSTALL
INSTALL_MENU;;
3) X11VNC_INSTALL
INSTALL_MENU;;
4) FW_INSTALL
INSTALL_MENU;;
5) MYSQLBU_INSTALL
INSTALL_MENU;;
9) BASHRC_INSTALL
INSTALL_MENU;;
0) LINUPX_UNINSTALL
INSTALL_MENU;;
[Bb]) SCRIPT_MENU;;
[Qq]) EXIT1
exit 1;;
*) echo "Thats an invaild option,";
echo "please select a valid option only.";
sleep 1;;
esac
done
}
if [ ${action-x} ]; then
case $1 in
update) UPDATE3;;
up) UPDATE4;;
# *) echo "Thats an invaild option,";
# exit 1;;
esac
else
SCRIPT_MENU
fi
exit 0