One-KVM/uninstall-pikvm.sh
2024-06-18 18:29:24 +08:00

113 lines
3.9 KiB
Bash

#!/bin/bash
# Script written by @srepac as requested by @Mark Jim
# This script perform uninstall of pikvm from raspbian. This performs the following:
#
# 1. Stop/disable kvmd services
# 2. Remove the main kvmd package files based on what was installed (see /var/cache/kvmd/installed_ver.txt file)
#
# CAVEATS:
# 1. Script does not remove /usr/bin/ttyd (webterm), /usr/bin/ustreamer, /usr/bin/ustreamer-dump
# 2. Script does not remove /usr/bin/janus (webrtc) and all its dependent files also
# 3. Script does not remove any directories; you may end up with empty directories
###
# CHANGELOG:
# 1.0 20220218 created script
# 1.1 20220220 confirm uninstall and add -f option to perform destructive commands
# 1.2 20220225 restore original /etc/motd
# 2.0 20220225 save custom configs for possible restores during re-install later
VER=2.0
save-configs() { ### save config files inside /etc/kvmd in case user re-installs pikvm later
if [[ $f_flag -eq 1 ]]; then
printf "\n-> Saving config files\n"
# Save passwd files used by PiKVM
cp /etc/kvmd/htpasswd /etc/kvmd/htpasswd.save
cp /etc/kvmd/ipmipasswd /etc/kvmd/ipmipasswd.save
cp /etc/kvmd/vncpasswd /etc/kvmd/vncpasswd.save
# Save webUI name and overrides
cp /etc/kvmd/meta.yaml /etc/kvmd/meta.yaml.save
cp /etc/kvmd/override.yaml /etc/kvmd/override.yaml.save
cp /etc/kvmd/web.css /etc/kvmd/web.css.save
# Save Janus configs
#cp /etc/kvmd/janus/janus.cfg /etc/kvmd/janus/janus.cfg.save
# Save sudoers.d/99_kvmd
cp /etc/sudoers.d/99_kvmd /etc/sudoers.d/99_kvmd.save
cp /etc/sudoers.d/custom_commands /etc/sudoers.d/custom_commands.save
fi
}
stop-disable-kvmd() {
#for i in $( systemctl | grep kvmd | grep -v var | awk '{print $1}')
for i in $( systemctl | grep kvmd | grep -v var | awk '$1||$2 ~ /kvmd/ {print $2, $1}' | sed 's/loaded //g' | cut -d' ' -f1 )
do
echo "-> Stopping/disabling ${i} ..."
if [[ $f_flag -eq 1 ]]; then systemctl disable --now $i; fi
done
} # end stop-disable-kvmd
# Determine what kvmd version was installed last
remove-kvmd-package() {
printf "\nProceeding to remove kvmd package files\n" | tee -a $LOGFILE
#KVMDVER=$( egrep 'kvmd-[0-9]' $INSTLOG | awk '{print $4}' | cut -d'-' -f2 | tail -1 )
KVMDVER=$( pikvm-info | grep kvmd-platform | awk '{print $1}' )
KVMDPKG="kvmd-${KVMDVER}"
echo "Uninstalling ${KVMDPKG} from this system."
for file in $( tar tvfJ /var/cache/kvmd/${KVMDPKG}* | awk '{print $NF}' | grep -v '/$' )
do
echo "-> Deleting /$file ..."
if [[ $f_flag -eq 1 ]]; then rm /$file; fi
done
} # end remove-kvmd-package
restore-motd() {
if [[ $f_flag -eq 1 ]]; then
if [ -e /etc/motd.orig ]; then cp -f /etc/motd.orig /etc/motd; fi
fi
cat /etc/motd
} # end restore-motd
are-you-sure() {
invalidinput=1
while [ $invalidinput -eq 1 ]; do
read -p "Uninstall PiKVM from this system. Are you sure? [y/n] " SURE
case $SURE in
Y|y) invalidinput=0 ;;
N|n) echo "Exiting."; exit 0 ;;
*) echo "Invalid input. try again."; invalidinput=1 ;;
esac
done
} # end are-you-sure fn
### MAIN STARTS HERE ###
if [ -e /usr/local/bin/rw ]; then rw; fi
mkdir -p /var/cache/kvmd # create directory in case it hasn't been created yet (e.g. installer hasn't been run)
export INSTLOG="/var/cache/kvmd/installed_ver.txt"
export LOGFILE="/var/cache/kvmd/uninstall.log"; rm -f $LOGFILE
if [ ! -e $INSTLOG ]; then
echo "Install log missing. Nothing to do." | tee -a $LOGFILE
exit 1
fi
if [[ "$1" == "-f" ]]; then
printf "\n*** Actually perform destructive commands option set.\n\n"
f_flag=1
else
printf "\n*** Only SHOWING what will be performed. Re-run with -f to actually perform destructive commands.\n\n"
f_flag=0
fi
are-you-sure
save-configs | tee -a $LOGFILE
stop-disable-kvmd | tee -a $LOGFILE
restore-motd | tee -a $LOGFILE
remove-kvmd-package | tee -a $LOGFILE
if [ -e /usr/local/bin/ro ]; then ro; fi