#!/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" } DNSUPDATE() { bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/update-dns.sh) echo "" echo -e "${Green}The DNS servers have been updated${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 } DSMON_INSTALL() { read -n 1 -p "Are you sure you wish to install DSMon (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo "" bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/install-dsmon.sh) echo "" echo -e "${Green}DSMon 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 " [8] Update DNS Servers" 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;; 8) DNSUPDATE 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 " [6] DSMon 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;; 6) DSMON_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