script-user-reset-x2go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/env bash
  2. # This script will reset x2go sessions to a working state
  3. # Use --all to reset all user X2Go sessions
  4. # Copyright 2021-2025 Bryan C. Roessler
  5. # Licensed under the Apache License, Version 2.0
  6. p="${BASH_SOURCE[0]%/*}"; [[ -r $p/script-functions ]] && . "$p"/script-functions || exit 1
  7. echo "Usage: $0 [username|--all]"
  8. USER_LIST=()
  9. if [[ $EUID -gt 0 ]]; then
  10. echo "Run as root for all users. Running in user mode for: $(whoami)"
  11. USER_LIST+=("$(whoami)")
  12. else
  13. if [[ $1 == "--all" ]]; then
  14. for d in /home/*; do [[ -d $d ]] && USER_LIST+=("${d##*/}"); done
  15. elif [[ -n $1 ]]; then
  16. USER_LIST+=("$1")
  17. else
  18. prompt user
  19. USER_LIST+=("$user")
  20. unset user
  21. fi
  22. fi
  23. for user in "${USER_LIST[@]}"; do
  24. # Remove X2Go cache files
  25. shopt -s nullglob
  26. caches=(/home/"$user"/.x2go/C-"$user"-* /home/"$user"/.xsession-x2go-*)
  27. shopt -u nullglob
  28. if (( ${#caches[@]} )); then
  29. ask_ok "Remove X2Go cache files for $user?" &&
  30. rm -rf "${caches[@]}" &&
  31. echo "Removed: ${caches[*]} for $user"
  32. fi
  33. # Terminate X2Go sessions
  34. if [[ $EUID -gt 0 ]]; then
  35. mapfile -t sessions < <(x2golistsessions | grep "$user" | cut -f2 -d'|')
  36. else
  37. mapfile -t sessions < <(x2golistsessions_root | grep "$user" | cut -f2 -d'|')
  38. fi
  39. if (( ${#sessions[@]} )); then
  40. ask_ok "Terminate X2Go sessions for $user?" &&
  41. for session in "${sessions[@]}"; do
  42. x2goterminate-session "$session" &&
  43. echo "Terminated: $session for $user"
  44. done
  45. fi
  46. done