menu script for systemctl timer
Script checks for systemctl state loaded and state activated. Choices diffrent based on stateunknown
sh
a year ago
8.9 kB
13
Indexable
#!/bin/bash
source ~/steammenuscripts/paramsysctl.soulmask
loaded=$(sudo systemctl status autoupdatesteamgs1.timer | grep -Po '(?<=Loaded: )\w+(?= \()')
active=$(sudo systemctl status autoupdatesteamgs1.timer | grep -Po '(?<=Active: )\w+(?= \()')
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
servicestatus=""
# Use a case statement to set the variable based on the output
case $loaded in
masked)
servicestatus="Disabled (masked)"
;;
loaded)
servicestatus="Enabled (unmasked)"
;;
*)
echo "Unexpected output: $output"
exit 1
;;
esac
# Initial message box with OK button
whiptail --title "Information" --msgbox "$(systemctl status autoupdatesteamgs1.timer --no-pager)" 0 0
# Yes/No box
if whiptail --title "Confirmation" --yesno "Autoupdate is $servicestatus and $active ; do you wish to change this ?" 10 60 --defaultno; then
sync
while true; do
if [[ "$loaded" == "masked" ]]; then
CHOICE=$(whiptail --separate-output --radiolist "AUTOUPDATE IS DISABLED, DO YOU WISH TO..." 0 0 5 \
"1" "Do nothing and exit" ON \
"2" "Enable Autoupdate and also activate" OFF \
"3" "Enable Autoupdate but don't activate until next restart" OFF 3>&1 1>&2 2>&3)
if [ -z "$CHOICE" ]; then
echo "No option was chosen (user hit Cancel)"
else
## echo "The user chose $CHOICE"
case $CHOICE in
"1")
exit
;;
"2")
{
sleep 0.5
echo -e "XXX\n0\nEnabling autoupdate timer... \nXXX"
sudo systemctl unmask $sysctltimer &> /dev/null
sleep 2
echo -e "XXX\n33\nEnabling autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nActivating autoupdate timer... \nXXX"
sudo systemctl start $sysctltimer
sleep 2
echo -e "XXX\n66\nActivating autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n66\nWriting to log... \nXXX"
echo "Autoupdate enabled (unmasked) and activated $timestamp" >> ~/steammenuscripts/serverlog
sleep 2
echo -e "XXX\n100\nWriting to log\nXXX"
} | whiptail --title "$gamename" --gauge "Enabling autoupdate" 6 60 0
exit
;;
"3")
{
sleep 0.5
echo -e "XXX\n0\nEnabling autoupdate timer... \nXXX"
sudo systemctl unmask $sysctltimer &> /dev/null
sleep 3
echo -e "XXX\n33\nEnabling autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nWriting to log file... \nXXX"
echo "Autoupdate enabled (unmasked) not activated $timestamp" >> ~/steammenuscripts/serverlog
sleep 1
echo -e "XXX\n66\nWriting to log file... Done.\nXXX"
sleep 0.5
} | whiptail --title "$gamename" --gauge "Enabling autoupdate..." 6 60 0
exit
;;
*)
echo "Invalid option."
;;
esac
fi
continue
elif [[ "$loaded" == "loaded" ]]; then
if [[ "$active" == "inactive" ]]; then
CHOICE=$(whiptail --separate-output --radiolist "AUTOUPDATE IS ENABLED BUT INACTIVE, DO YOU WISH TO..." 0 0 5 \
"1" "Do nothing and exit" ON \
"2" "Activate autoupdate timer" OFF \
"3" "Disable (mask) Autoupdate" OFF 3>&1 1>&2 2>&3)
if [ -z "$CHOICE" ]; then
echo "No option was chosen (user hit Cancel)"
else
echo "The user chose $CHOICE"
case $CHOICE in
"1")
exit
;;
"2")
{
sleep 0.5
echo -e "XXX\n0\nActivated autoupdate timer... \nXXX"
sudo systemctl start $sysctltimer
sleep 2
echo -e "XXX\n33\nActivating autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nWriting to log file... \nXXX"
echo "Autoupdate activated $timestamp" >> ~/steammenuscripts/serverlog
sleep 2
echo -e "XXX\n66\nWriting to log file... Done.\nXXX"
sleep 0.5
} | whiptail --title "$gamename" --gauge "Activating autoupdate" 6 60 0
exit
;;
"3")
{
sleep 0.5
echo -e "XXX\n0\nStopping autoupdate timer... \nXXX"
sudo systemctl stop $sysctltimer
sleep 2
echo -e "XXX\n33\nStopping autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nDisabling autoupdate timer... \nXXX"
sudo systemctl mask $sysctltimer &> /dev/null
sleep 2
echo -e "XXX\n66\nDisabling autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n66\nWriting to log... \nXXX"
echo "Autoupdate disabled (masked) $timestamp" >> ~/steammenuscripts/serverlog
sleep 2
echo -e "XXX\n100\nWriting to log\nXXX"
} | whiptail --title "$gamename" --gauge "Disabling autoupdate" 6 60 0
exit
;;
*)
exit
;;
esac
fi
elif [[ "$active" == "active" ]]; then
CHOICE=$(whiptail --separate-output --radiolist "AUTOUPDATE IS ENABLED AND ACTIVE, DO YOU WISH TO..." 0 0 5 \
"1" "Do nothing and exit" ON \
"2" "Deactivate autoupdate until next restart" OFF \
"3" "Deactivate and disable (mask) Autoupdate" OFF 3>&1 1>&2 2>&3)
if [ -z "$CHOICE" ]; then
echo "No option was chosen (user hit Cancel)"
else
echo "The user chose $CHOICE"
case $CHOICE in
"1")
exit
;;
"2")
{
sleep 0.5
echo -e "XXX\n0\nDeactivate autoupdate timer... \nXXX"
sudo systemctl stop $sysctltimer
sleep 2
echo -e "XXX\n33\nDeactivate autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nWriting to log file... \nXXX"
echo "Autoupdate deactivated $timestamp" >> ~/steammenuscripts
sleep 2
echo -e "XXX\n66\nWriting to log file... Done.\nXXX"
sleep 0.5
} | whiptail --title "$gamename" --gauge "Deactivating autoupdate" 6 60 0
exit
;;
"3")
{
sleep 0.5
echo -e "XXX\n0\nDeactivating autoupdate timer... \nXXX"
sudo systemctl stop $sysctltimer
sleep 2
echo -e "XXX\n33\nDeactivating autoupdate timer... Done.\nXXX"
sleep 0.5
echo -e "XXX\n33\nDisabling (mask) autoupdate... \nXXX"
sudo systemctl mask $sysctltimer &> /dev/null
sleep 2
echo -e "XXX\n66\nDisabling (mask) autoupdate... Done.\nXXX"
sleep 0.5
echo -e "XXX\n66\nWriting to log... \nXXX"
echo "Autoupdate disabled (masked) $timestamp" >> ~/steammenuscripts/serverlog
sleep 2
echo -e "XXX\n100\nWriting to log... Done.\nXXX"
} | whiptail --title "$gamename" --gauge "Disabling autoupdate" 6 60 0
exit
;;
"4")
exit
;;
*)
echo "Invalid option."
;;
esac
fi
fi
else
whiptail --title "Information" --msgbox "FAILURE: Please contact server administrator for systemctl reset" 0 0
sync
exit
fi
sleep 10
done
else
exit
fi
Editor is loading...
Leave a Comment