diff --git a/script-user-reset-x2go b/script-user-reset-x2go index 021f2da1..4e442467 100755 --- a/script-user-reset-x2go +++ b/script-user-reset-x2go @@ -1,5 +1,6 @@ #!/usr/bin/env bash # This script will reset x2go sessions to a working state +# Use --all to reset all user X2Go sessions # Copyright Bryan C. Roessler parent="${BASH_SOURCE[0]}" @@ -7,24 +8,32 @@ parent=${parent%/*} [[ -f $parent/script-functions ]] && . "$parent"/script-functions || exit 1 -is_root +echo "This script supports one optional argument, a username (or --all for all users)" -echo "This script supports one optional argument, a username" - -user_list=() -if [[ $# -eq 1 ]]; then - if [[ $1 == '--all' ]]; then - for i in /home/*; do - user_list+=("${i##*/}") - done - fi +USER_MODE=0 +USER_LIST=() +if [[ $EUID -gt 0 ]]; then + echo "This script should normally be run as root (with sudo)" + echo "Attempting to run in user mode" + USER_MODE=1 + USER_LIST+=($(whoami)) else - prompt user - user_list+=("$user") - unset user + if [[ $# -eq 1 ]]; then + if [[ $1 == '--all' ]]; then + for i in /home/*; do + USER_LIST+=("${i##*/}") + done + else + USER_LIST+=("$1") + fi + else + prompt user + USER_LIST+=("$user") + unset user + fi fi -for user in "${user_list[@]}"; do +for user in "${USER_LIST[@]}"; do # Clean local user cache shopt -s nullglob caches=(/home/"$user"/.x2go/C-"$user"-* /home/"$user"/.xsession-x2go-*) @@ -34,8 +43,12 @@ for user in "${user_list[@]}"; do rm -rf /home/"$user"/.x2go/C-"$user"-* && echo "Removed: ${caches[*]} for user $user" fi - # Clean X2Go sessions - mapfile -t sessions < <(x2golistsessions_root | grep "$user"| cut -f2 -d'|') + # Clean X2Go sessions + if (( USER_MODE )); then + mapfile -t sessions < <(x2golistsessions | grep "$user"| cut -f2 -d'|') + else + mapfile -t sessions < <(x2golistsessions_root | grep "$user"| cut -f2 -d'|') + fi if [[ ${#sessions} -gt 0 ]]; then ask_ok "Terminate X2Go sessions for user $user?" && for session in "${sessions[@]}"; do