Files
LinUPx/linupx-scripts.sh

1041 lines
33 KiB
Bash
Executable File

#!/usr/bin/env bash
# LinUPx - Linux Update Scripts
action="$1"
FOLDER='/opt/idssys/linupx'
VERS='6.2-07172023'
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
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(){
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]}"
if [ -f /etc/netplan/99-netcfg-* ]; then
rm -f /etc/netplan/*.yaml >/dev/null 2>&1
[ -f /etc/netplan/eth0* ] && mv /etc/netplan/eth0* /etc/netplan/eth0.yaml
if [ ! -f /etc/netplan/eth0.yaml ]; then
echo -e "network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [10.5.4.20/20]
gateway4: 10.5.1.1
nameservers:
addresses: [10.10.10.10,10.10.10.11]
" > /etc/netplan/eth0.yaml
fi
fi
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
echo -e " [${idsCL[Yellow]}4${idsCL[Default]}] Check for Upgrades with obsoletes enabled"
echo -e " [${idsCL[Yellow]}5${idsCL[Default]}] Run Dist-Upgrade"
echo -e "*[${idsCL[Yellow]}6${idsCL[Default]}] Run Python-Pip Upgrades"
echo
echo -e " [${idsCL[Yellow]}9${idsCL[Default]}] Update/Fix Missing APT Repo Keys"
if [ "$ATYPE" != 'yum' ]; then
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