#!/usr/bin/env bash # LinUPx - Linux Update Scripts action="$1" FOLDER='/opt/idssys/linupx' VERS='6.7-08122023' if [ -d /opt/idssys/settings ]; then [ $(ls /opt/idssys/settings | wc -l) -eq 0 ] && rm -rf /opt/idssys/settings 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 echo "Program has been updated, please re-run" exit 0 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 [ "$(dpkg-query -W --showformat='${Status}\n' grepcidr | grep "install ok installed")" == "" ] && sudo apt -y install grepcidr >/dev/null 2>&1 source /opt/idssys/linupx/settings.conf source /opt/idssys/defaults/colors.inc source /opt/idssys/defaults/default.inc [ -z ${useAutoremove+x} ] && echo -e "useAutoremove=1" >> /opt/idssys/linupx/settings.conf && source /opt/idssys/linupx/settings.conf 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' 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 [[ "$useAutoremove" -ne 0 ]] && AUTOREMOVE $APTFUNC update $APTFUNC upgrade -y $APTFUNC dist-upgrade # echo # read -n 1 -p "Would you like to run dist-upgrade as well (Y/n)?" choice # echo # case "$choice" in # [Yy]) $APTFUNC dist-upgrade;; # esac [[ "$useAutoremove" -ne 0 ]] && 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 "${idsCL[Green]}Updates have completed${idsCL[Default]}" 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 [[ "$useAutoremove" -ne 0 ]] && AUTOREMOVE $APTFUNC upgrade -y echo read -n 1 -p "Would you like to run dist-upgrade as well (Y/n)?" choice echo case "$choice" in [Yy]) $APTFUNC dist-upgrade;; esac [[ "$useAutoremove" -ne 0 ]] && AUTOREMOVE if [ "$opennms" = true ]; then sudo apt-mark hold libopennms-java libopennmsdeps-java opennms-common opennms-db fi touch "${FOLDER}/lastrun" echo echo -e "${idsCL[Green]}Updated Upgrades have completed${idsCL[Default]}" 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 "${idsCL[Green]}Updates have completed${idsCL[Default]}" if [ "$autorun_restart_after" = true ] || [ "$restart_flag" = true ]; then echo -e "${BOrange}Rebooting now...${idsCL[Default]}" 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 "${idsCL[Green]}Updates have completed${idsCL[Default]}" if [ "$autorun_restart_after" = true ] || [ "$restart_flag" = true ]; then echo -e "${BOrange}Rebooting now...${idsCL[Default]}" 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 "${idsCL[Green]}Dist Upgrades has completed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue" } PIPUPGRADE() { if ! command -v jq &> /dev/null then $APTFUNC install jq -y fi if [ "$EUID" -ne 0 ]; then sudo python3 -m pip install --upgrade pip sudo pip3 list --outdated --format=json | jq -r '.[] | "\(.name)==\(.latest_version)"' | xargs -n1 pip3 install -U else python3 -m pip install --upgrade pip pip3 list --outdated --format=json | jq -r '.[] | "\(.name)==\(.latest_version)"' | xargs -n1 pip3 install -U fi echo echo -e "${idsCL[Green]}Python-Pip Upgrades has completed${idsCL[Default]}" 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 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 "${idsCL[Green]}Upgrade dry-run has completed${idsCL[Default]}" 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 "${idsCL[Green]}Dist-Upgrade dry-run has completed${idsCL[Default]}" 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 "${idsCL[Green]}Webmin has been Installed${idsCL[Default]}" 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 "${idsCL[Green]}Glances has been Installed${idsCL[Default]}" 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 "${idsCL[Green]}MySQL-BU has been Installed${idsCL[Default]}" 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 "${idsCL[Green]}DSMon has been Installed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; esac } REMOVEFLOPPY() { echo if [ ! -f /etc/modprobe.d/blacklist-floppy.conf ]; then echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf sudo rmmod floppy sudo update-initramfs -u echo echo -e "${idsCL[Green]}Floppy has been removed, you must reboot to take effect.${idsCL[Default]}" echo read -e -n 1 -p $'\e[1;31mWould you like to reboot now (y/N)?\e[0m' choice case "$choice" in [Yy]) echo echo echo -e "${BOrange}The system is now rebooting...${idsCL[Default]}" if [ "$EUID" -ne 0 ]; then sudo shutdown -r now else shutdown -r now; fi sleep 60 exit 0;; * ) SCRIPT_MENU;; esac else echo -e "${idsCL[Green]}Floppy has already been removed.${idsCL[Default]}" echo read -n 1 -s -p "Press any key to continue" fi } NETDATA_INSTALL() { if service_exists netdata; then read -n 1 -p "Netdata is already installed, would you like to remove it (y/N)?" choice case "$choice" in [Yy]) echo wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --uninstall apt remove --purge netdata netdata-repo-edge -y rm -Rf /var/cache/netdata /var/lib/netdata /etc/logrotate.d/netdata /etc/default/netdata /etc/netdata /etc/init.d/netdata /etc/systemd/system/netdata.service /etc/systemd/system/multi-user.target.wants/netdata.service systemctl daemon-reload echo echo -e "${idsCL[Green]}Netdata Agent has been Removed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; * ) INSTALL_MENU;; esac else read -n 1 -p "Are you sure you wish to install Netdata Agent (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --claim-token GKUQidqs3HAdWdyLgYjjHpI6k0W09TPxv4hyEvESuNKF9Xy0SKBvOr7BokNZHn6j7GUHlfc_R8UQp-dEXPAoRHdEmbSRCGOXX4XiOfMRazUk6Dd_3qjIdqJu9YqDaL2jw1hSTzw --claim-url https://app.netdata.cloud echo echo -e "${idsCL[Green]}Netdata Agent has been Installed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; esac fi } NETDATA_UNINSTALL(){ sudo killall netdata sudo wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --uninstall --non-interactive sudo systemctl stop netdata sudo systemctl disable netdata sudo systemctl unmask netdata sudo rm -rf /lib/systemd/system/netdata.service sudo rm -rf /lib/systemd/system/netdata-updater.service sudo rm -rf /lib/systemd/system/netdata-updater.timer sudo rm -rf /etc/logrotate.d/netdata sudo /usr/libexec/netdata/netdata-uninstaller.sh --yes --env /etc/netdata/.environment sudo apt --purge remove netdata -y sudo rm /usr/lib/netdata* -R sudo rm /var/lib/apt/lists/packagecloud.io_netdata_* -R sudo rm /etc/init.d/netdata sudo rm /etc/rc0.d/K01netdata sudo rm /etc/rc1.d/K01netdata sudo rm /etc/rc2.d/K01netdata sudo rm /etc/rc3.d/K01netdata sudo rm /etc/rc4.d/K01netdata sudo rm /etc/rc5.d/K01netdata sudo rm /etc/rc6.d/K01netdata sudo rm /etc/rc0.d/S01netdata sudo rm /etc/rc1.d/S01netdata sudo rm /etc/rc2.d/S01netdata sudo rm /etc/rc3.d/S01netdata sudo rm /etc/rc4.d/S01netdata sudo rm /etc/rc5.d/S01netdata sudo rm /etc/rc6.d/S01netdata sudo rm /usr/sbin/netdata sudo rm -rf /var/lib/dpkg/info/netdata* -R sudo rm -rf /var/lib/apt/lists/packagecloud.io_netdata* -R sudo rm -rf /usr/share/netdata -R sudo rm -rf /usr/share/doc/netdata* -R sudo rm /usr/share/lintian/overrides/netdata* sudo rm /usr/share/man/man1/netdata.1.gz sudo rm /var/lib/systemd/deb-systemd-helper-enabled/netdata.service.dsh-also sudo rm /var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/netdata.service sudo rm /var/lib/systemd/deb-systemd-helper-masked/netdata.service sudo rm -rf /usr/lib/netdata -R sudo rm -rf /etc/rc2.d/S01netdata -R sudo rm -rf /etc/rc3.d/S01netdata -R sudo rm -rf /etc/rc4.d/S01netdata -R sudo rm -rf /etc/rc5.d/S01netdata -R sudo rm -rf /etc/default/netdata -R sudo rm -rf /etc/apt/sources.list.d/netdata.list sudo rm -rf /etc/apt/sources.list.d/netdata-edge.list sudo rm -rf /etc/apt/trusted.gpg.d/netdata-archive-keyring.gpg sudo rm -rf /etc/apt/trusted.gpg.d/netdata-edge-archive-keyring.gpg sudo rm -rf /etc/apt/trusted.gpg.d/netdata-repoconfig-archive-keyring.gpg sudo rm -rf /SM_DATA/sm_virt_machines/media/netdata-uninstaller.sh sudo rm -rf /SM_DATA/sm_virt_machines/media/netdata* sudo rm -rf /SM_DATA/working/netdata-kickstart* sudo rm -rf /usr/share/lintian/overrides/netdata sudo rm -rf /var/cache/apt/archives/netdata* sudo rm -rf /opt/netdata* sudo rm -rf /etc/cron.daily/netdata-updater sudo rm -rf /usr/libexec/netdata -R sudo rm -rf /var/log/netdata -R sudo rm -rf /var/cache/netdata -R sudo rm -rf /var/lib/netdata -R sudo rm -rf /etc/netdata -R sudo rm -rf /opt/netdata -R systemctl daemon-reload } IPERF_INSTALL() { read -n 1 -p "Are you sure you wish to install iPerf (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo cd /tmp wget https://downloads.es.net/pub/iperf/iperf-3.10.1.tar.gz tar -zxhf iperf-3.10.1.tar.gz cd /tmp/iperf-3.10.1 ./configure make make install ldconfig echo echo -e "${idsCL[Green]}iPerf has been Installed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; esac } CHANGECOPYCERTS_INSTALL() { read -n 1 -p "Are you sure you wish to change SSL servers (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo ssh-copy-id le@keepalived.scity.us echo sed -i 's/scp le@webserver.scity.us:\/etc\/letsencrypt\/live/scp le@keepalived.scity.us:\/opt\/nginx-proxy\/ssl/' /opt/copycerts.sh sed -i 's/scp -pr le@webserver.scity.us:\/etc\/letsencrypt\/live/scp -pr le@keepalived.scity.us:\/opt\/nginx-proxy\/ssl/' /opt/copycerts.sh /opt/copycerts.sh echo echo -e "${idsCL[Green]}copycerts.sh has been updated${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; esac } SPEEDTEST_INSTALL() { read -n 1 -p "Are you sure you wish to install SpeedTest (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo $APTFUNC remove -y -qq speedtest speedtest-cli >/dev/null 2&>1 pip uninstall speedtest speedtest-cli -y >/dev/null 2&>1 rm /usr/local/bin/speedtest-cli >/dev/null 2&>1 curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash $APTFUNC install -y speedtest echo echo -e "${idsCL[Green]}SpeedTest has been Installed${idsCL[Default]}" echo echo -e "${LightCyan}To run, use the command: speedtest${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; esac } URBACKUP_INSTALL() { read -n 1 -p "Are you sure you wish to install Urbackup Client (Y/n)?" choice case "$choice" in [Nn]) INSTALL_MENU;; * ) echo read -p "Enter ClientID:" clientid echo read -p "Enter Auth Key:" authkey TF=`mktemp` wget "http://urbackup.scity.us:55414/x?a=download_client&lang=en&clientid=${clientid}&authkey=${authkey}&os=linux" -O $TF sudo sh $TF rm -f $TF echo echo -e "${idsCL[Green]}UrBackup Client has been Installed${idsCL[Default]}" echo 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 "${idsCL[Green]}x11vnc has been Installed${idsCL[Default]}" 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 } 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/master/install-dsmon.sh) echo if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue";; 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.10 python3-pip update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2 update-alternatives --config python3 echo echo -e "${idsCL[Green]}Python3.10 Upgrade has been Completed${idsCL[Default]}" if [ ${action-x} ]; then exit 0; fi read -n 1 -s -p "Press any key to continue" SCRIPT_MENU;; esac } POSTFIX_INSTALL(){ bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/master/install-postfix.sh) echo read -n 1 -s -p "Press any key to continue" INSTALL_MENU } BASHRC_INSTALL(){ echo -e "${idsCL[Green]}Installing root/.bashrc${idsCL[Default]}" /usr/bin/wget -O ~/.bashrc https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/bashrc read -n 1 -s -p "Press any key to continue" INSTALL_MENU } MPVMFIX(){ echo -e " blacklist { device { vendor \"VMware\" product \"Virtual disk\" } } " >> /etc/multipath.conf /etc/init.d/multipath-tools restart } ADDVEEAMUSER(){ bash <(curl -sL https://git.schroedercity.com/voltron/Misc-Scripts/raw/branch/master/add-veeam-user.sh) echo } COPYCERTS_UPDATE(){ if [ -f /opt/copycerts.sh ]; then /usr/bin/ssh-copy-id le@keepalived.scity.us /bin/sed -i 's/le@keepalived.scity.us\:\/opt\/nginx-proxy\/ssl/le@keepalived.scity.us\:\/opt\/lb-data\/letsencrypt\/live/g' /opt/copycerts.sh /opt/copycerts.sh echo echo -e "${idsCL[Green]}copycerts.sh has been updated${idsCL[Default]}" else echo -e "${Blue}copycerts.sh not found${idsCL[Default]}" fi [ ${1-x} ] && exit 0 || read -n 1 -s -p "Press any key to continue" } UPDATEREPOKEYS(){ apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com echo echo -e "${idsCL[Green]}APT Repo Keys have been updated${idsCL[Default]}" read -n 1 -s -p "Press any key to continue" } RECONFIGURE_NETWORK(){ if [ -f /etc/netplan/99-netcfg-* ]; then echo -en "${idsCL[LightYellow]}New VM Detected, fixing netplan: " rm -f /etc/netplan/*.yaml >/dev/null 2>&1 [ -f /etc/netplan/eth0* ] && mv /etc/netplan/eth0* /etc/netplan/eth0.yaml >/dev/null 2>&1 if [ ! -f /etc/netplan/eth0.yaml ]; then echo -e "network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [10.10.4.20/16] gateway4: 10.10.0.1 nameservers: addresses: [10.10.10.10,10.10.10.11] " > /etc/netplan/eth0.yaml >/dev/null 2>&1 fi netplan apply >/dev/null 2>&1 echo "${idsCL[Green]}Done${idsCL[Default]}\n\n" fi echo -en "\n${idsCL[LightCyan]}Would you like to configure the hostname and network settings (y/N)? ${idsCL[Default]}" read choice case "$choice" in [Yy]) echo echo -en "${idsCL[LightYellow]}Hostname [Current='${idsCL[White]}$(hostname)${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e HOSTNAME [ "${HOSTNAME}" == "" ] && HOSTNAME=$(hostname) echo echo -en "${idsCL[LightYellow]}Domain (optional): ${idsCL[Default]}" read -e DOMAIN echo REPIP=`hostname -I` REPIP=${REPIP/ /} echo -en "${idsCL[LightYellow]}IP Address [Current='${idsCL[White]}${REPIP}${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e IPADDRESS [ "${IPADDRESS}" == "" ] && IPADDRESS=${REPIP} echo REPSUB=`/sbin/ifconfig eth0 | awk '/netmask/{ print $4;} '` echo -en "${idsCL[LightYellow]}Subnet Mask [Current='${idsCL[White]}${REPSUB}${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e SUBNET [ "${SUBNET}" == "" ] && SUBNET=${REPSUB} echo REPGW=`route -n | grep 'UG[ \t]' | awk '{print $2}'` echo -en "${idsCL[LightYellow]}Gateway IP [Current='${idsCL[White]}${REPGW}${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e GATEWAY [ "${GATEWAY}" == "" ] && GATEWAY=${REPGW} echo REPPRIDNS=`resolvectl -i eth0 dns | awk '/eth0/{ print $4;} '` echo -en "${idsCL[LightYellow]}Primary DNS [Current='${idsCL[White]}${REPPRIDNS}${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e PRIDNS [ "${PRIDNS}" == "" ] && PRIDNS=${REPPRIDNS} echo REPSECDNS=`resolvectl -i eth0 dns | awk '/eth0/{ print $5;} '` echo -en "${idsCL[LightYellow]}Secondary DNS (optional) [Current='${idsCL[White]}${REPSECDNS}${idsCL[LightYellow]}']: ${idsCL[Default]}" read -e SECDNS [ "${SECDNS}" == "" ] && SECDNS=${REPSECDNS} echo echo echo "Confirm settings:" echo -e "${idsCL[LightCyan]}Hostname : ${idsCL[Green]}${HOSTNAME}${idsCL[Default]}" if [ "${DOMAIN}" != "" ]; then echo -e "${idsCL[LightCyan]}Domain : ${idsCL[Green]}${DOMAIN}${idsCL[Default]}" echo -e "${idsCL[LightCyan]}FQDN : ${idsCL[Green]}${HOSTNAME}.${DOMAIN}${idsCL[Default]}" fi echo -e "${idsCL[LightCyan]}IP Address : ${idsCL[Green]}${IPADDRESS}${idsCL[Default]}" echo -e "${idsCL[LightCyan]}Subnet Mask : ${idsCL[Green]}${SUBNET}${idsCL[Default]}" echo -e "${idsCL[LightCyan]}Gateway IP : ${idsCL[Green]}${GATEWAY}${idsCL[Default]}" echo -e "${idsCL[LightCyan]}Primary DNS : ${idsCL[Green]}${PRIDNS}${idsCL[Default]}" echo -e "${idsCL[LightCyan]}Secondary DNS : ${idsCL[Green]}${SECDNS}${idsCL[Default]}" echo echo -en "${idsCL[LightCyan]}Is this correct (Y/n)? ${idsCL[Default]}" read -n 1 choice case "$choice" in [Nn]) ;; *) echo -en "${idsCL[LightCyan]}Making configuration changes ... ${idsCL[Default]}" hostnamectl set-hostname ${HOSTNAME} >/dev/null 2>&1 sed -i '/127.0.1.1/d' /etc/hosts >/dev/null 2>&1 [ "${DOMAIN}" == "" ] && echo "127.0.1.1 ${HOSTNAME}" >> /etc/hosts || echo "127.0.1.1 ${HOSTNAME}.${DOMAIN} ${HOSTNAME}" >> /etc/hosts NEWSUB=`IPprefix_by_netmask ${SUBNET}` REPSUB=`IPprefix_by_netmask ${REPSUB}` sed -i "s/${REPIP}\/${REPSUB}/${IPADDRESS}\/${NEWSUB}/g" /etc/netplan/eth0.yaml >/dev/null 2>&1 sed -i "s/${REPIP}\/${REPSUB}/${IPADDRESS}\/${NEWSUB}/g" /etc/netplan/eth0.yaml >/dev/null 2>&1 [ "${SECDNS}" != "" ] && DNS="${PRIDNS},${SECDNS}" || DNS="${PRIDNS}" [ "${REPSECDNS}" != "" ] && REPDNS="${REPPRIDNS},${REPSECDNS}" || REPDNS="${REPPRIDNS}" sed -i "s/${REPDNS}/${DNS}/g" /etc/netplan/eth0.yaml >/dev/null 2>&1 sed -i "s/${REPGW}/${GATEWAY}/g" /etc/netplan/eth0.yaml >/dev/null 2>&1 sed -i '/search/d' /etc/netplan/eth0.yaml >/dev/null 2>&1 if [ "${DOMAIN}" != "" ]; then echo " search: [${DOMAIN}]" >> /etc/netplan/eth0.yaml fi netplan apply echo -e "${idsCL[Green]}Done${idsCL[Default]}" echo ;; esac echo -e "\n${idsCL[Green]}Network has been updated${idsCL[Default]}\n" read -n 1 -s -p "Press any key to continue" echo ;; esac } 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 " ${idsCL[Green]}LinUPx - L I N U X U P D A T E S C R I P T S${idsCL[Default]} ${idsCL[White]}(ver-${VERS})${idsCL[Default]}" echo -e "${idsCL[Green]}---------------------------------------------------------------------------${idsCL[Default]}" echo -e "Hostname: ${idsCL[Cyan]}$(hostname -s)${idsCL[Default]}" echo -e "Domain: ${idsCL[Cyan]}$(hostname -d)${idsCL[Default]}" echo echo -e "Updates last run on: ${idsCL[LightGreen]}${LASTRUND} ${LASTRUNT}${idsCL[Default]}" echo -e "---------------------------------------------------------------------------" OS=($(detect_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 "${idsCL[LightGreen]}---------------------------------------------------------------------------${idsCL[Default]}" echo echo -e " [${idsCL[Yellow]}1${idsCL[Default]}] Check for Updates/Upgrades" echo -e "*[${idsCL[Yellow]}2${idsCL[Default]}] Run Updates" if [ "$ATYPE" != 'yum' ]; then echo -e " [${idsCL[Yellow]}3${idsCL[Default]}] Run Updates w/o updating repos" fi echo if [ "$ATYPE" != 'yum' ]; then echo -e " [${idsCL[Yellow]}4${idsCL[Default]}] Check for Upgrades with obsoletes enabled" echo -e " [${idsCL[Yellow]}5${idsCL[Default]}] Run Dist-Upgrade" fi echo -e "*[${idsCL[Yellow]}6${idsCL[Default]}] Run Python-Pip Upgrades" echo if [ "$ATYPE" != 'yum' ]; then echo -e " [${idsCL[Yellow]}9${idsCL[Default]}] Update/Fix Missing APT Repo Keys" echo -e " [${idsCL[Yellow]}0${idsCL[Default]}] Enable/Disable Automatic Security Updates" echo fi echo -e " [${idsCL[Yellow]}I${idsCL[Default]}] Installation Scripts" echo -e " [${idsCL[Yellow]}M${idsCL[Default]}] Misc/Other Scripts" echo # echo -e " [${idsCL[Yellow]}L${idsCL[Default]}] Enable Remote Syslog" # echo -e " [Config file: RemoteSyslogServer=${RemoteSyslogServer}]" # echo echo -e " [${idsCL[Yellow]}R${idsCL[Default]}] Reboot System" echo -e " [${idsCL[Yellow]}S${idsCL[Default]}] Shutdown System" echo -e " [${idsCL[Yellow]}Q${idsCL[Default]}] Quit" echo echo echo -e -n "${idsCL[Yellow]}Please select an [ActionItem] from above:${idsCL[Default]} " 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;; 9) UPDATEREPOKEYS SCRIPT_MENU;; 0) ENDISASU SCRIPT_MENU;; [Ii]) INSTALL_MENU;; [Mm]) MISC_MENU;; [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 } MISC_MENU() { while : do clear echo echo -e " ${idsCL[Green]}LinUPx - L I N U X U P D A T E S C R I P T S${idsCL[Default]} ${idsCL[White]}(ver-${VERS})${idsCL[Default]}" echo -e "${idsCL[Green]}---------------------------------------------------------------------------${idsCL[Default]}" echo -e "Hostname: ${idsCL[Cyan]}$(hostname -s)${idsCL[Default]}" echo -e "Domain: ${idsCL[Cyan]}$(hostname -d)${idsCL[Default]}" echo -e "${idsCL[LightGreen]}---------------------------------------------------------------------------${idsCL[Default]}" echo -e "\n ${idsCL[LightGreen]}MISC/OTHER SCRIPTS${idsCL[Default]}\n" echo -e " [${idsCL[Yellow]}1${idsCL[Default]}] Reconfigure Network" echo -e " [${idsCL[Yellow]}2${idsCL[Default]}] Remove Floppy from VM" echo -e " [${idsCL[Yellow]}3${idsCL[Default]}] Fix multipath/vmware issue" echo if [ "$(IP_ALLOWED `hostname -I`)" == "true" ]; then echo -e " [${idsCL[Yellow]}U${idsCL[Default]}] Update copycerts.sh SSL server" echo -e " [${idsCL[Yellow]}D${idsCL[Default]}] Update DNS (10.10.10.10, 10.10.10.11)" echo -e " [${idsCL[Yellow]}C${idsCL[Default]}] Change copycerts to LB-Nodes" echo fi echo -e " [${idsCL[Yellow]}P${idsCL[Default]}] Upgrade to Python v3" echo -e " [${idsCL[Yellow]}V${idsCL[Default]}] Add Veeam User Account" echo -e "\n" echo -e " [${idsCL[Yellow]}B${idsCL[Default]}] Back to Main Menu" echo -e " [${idsCL[Yellow]}I${idsCL[Default]}] Installation Scripts" echo -e " [${idsCL[Yellow]}Q${idsCL[Default]}] Quit" echo echo echo -e -n "${idsCL[Yellow]}Please select a [#] from above:${idsCL[Default]} " read -n 1 opt echo case $opt in 1) RECONFIGURE_NETWORK; SCRIPT_MENU;; 2) REMOVEFLOPPY; SCRIPT_MENU;; 3) MPVMFIX echo read -n 1 -s -p "Press any key to continue" SCRIPT_MENU;; [Uu]) COPYCERTS_UPDATE; SCRIPT_MENU;; [Dd]) DNSUPDATE; SCRIPT_MENU;; [Cc]) CHANGECOPYCERTS_INSTALL; SCRIPT_MENU;; [Pp]) PYTHON3UPGRADE; SCRIPT_MENU;; [Vv]) ADDVEEAMUSER read -n 1 -s -p "Press any key to continue" SCRIPT_MENU;; [Bb]) SCRIPT_MENU;; [Ii]) INSTALL_MENU;; [Qq]) EXIT1; exit 1;; *) echo "Thats an invaild option,"; echo "please select a valid option only."; sleep 1;; esac done } INSTALL_MENU() { while : do clear echo echo -e " ${idsCL[Green]}LinUPx - L I N U X U P D A T E S C R I P T S${idsCL[Default]} ${idsCL[White]}(ver-${VERS})${idsCL[Default]}" echo -e "${idsCL[Green]}---------------------------------------------------------------------------${idsCL[Default]}" echo -e "Hostname: ${idsCL[Cyan]}$(hostname -s)${idsCL[Default]}" echo -e "Domain: ${idsCL[Cyan]}$(hostname -d)${idsCL[Default]}" echo -e "${idsCL[LightGreen]}---------------------------------------------------------------------------${idsCL[Default]}" echo -e "\n ${idsCL[LightGreen]}INSTALLATION SCRIPTS${idsCL[Default]}\n" echo -e " [${idsCL[Yellow]}1${idsCL[Default]}] Install Webmin" echo -e " [${idsCL[Yellow]}2${idsCL[Default]}] Install Glances" echo -e " [${idsCL[Yellow]}3${idsCL[Default]}] Install x11vnc" echo -e " [${idsCL[Yellow]}4${idsCL[Default]}] Install Filewatcher" echo -e " [${idsCL[Yellow]}5${idsCL[Default]}] Install MySQL-BU" echo -e " [${idsCL[Yellow]}6${idsCL[Default]}] Install DSMon" echo -e " [${idsCL[Yellow]}7${idsCL[Default]}] Install iPerf v3.10.1" echo -e " [${idsCL[Yellow]}8${idsCL[Default]}] Install Speedtest.net" echo echo -e " [${idsCL[Yellow]}D${idsCL[Default]}] Install DSMon" echo -e " [${idsCL[Yellow]}N${idsCL[Default]}] Install Netdata Agent" echo -e " [${idsCL[Yellow]}P${idsCL[Default]}] Install Postfix" echo -e " [${idsCL[Yellow]}U${idsCL[Default]}] Install UrBackup Client" echo echo -e " [${idsCL[Yellow]}9${idsCL[Default]}] Install .bashrc for root" # echo -e " [${idsCL[Yellow]}0] Remove LinUPx" echo echo -e " [${idsCL[Yellow]}B${idsCL[Default]}] Back to Main Menu" echo -e " [${idsCL[Yellow]}M${idsCL[Default]}] Misc/Other Scripts" echo -e " [${idsCL[Yellow]}Q${idsCL[Default]}] Quit" echo echo echo -e -n "${idsCL[Yellow]}Please select a [#] from above:${idsCL[Default]} " 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;; 7) IPERF_INSTALL INSTALL_MENU;; 8) SPEEDTEST_INSTALL INSTALL_MENU;; 9) BASHRC_INSTALL INSTALL_MENU;; 0) LINUPX_UNINSTALL INSTALL_MENU;; [Uu]) URBACKUP_INSTALL INSTALL_MENU;; [Dd]) DSMON_INSTALL INSTALL_MENU;; [Pp]) POSTFIX_INSTALL INSTALL_MENU;; [Nn]) NETDATA_INSTALL INSTALL_MENU;; [Bb]) SCRIPT_MENU;; [Mm]) MISC_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 ccupdate) COPYCERTS_UPDATE;; dnsupdate) DNSUPDATE;; update) UPDATE3;; up) UPDATE4;; mpvmfix) MPVMFIX;; addveeamuser) ADDVEEAMUSER;; netdataremove) NETDATA_UNINSTALL;; # *) echo "Thats an invaild option,"; # exit 1;; esac else SCRIPT_MENU fi exit 0