diff --git a/bin/mcserv b/bin/mcserv index e64fb8c..db28cbb 100755 --- a/bin/mcserv +++ b/bin/mcserv @@ -1,7 +1,16 @@ #!/bin/bash -shopt -s expand_aliases -alias mcscreen='sudo -u minecraft screen' +exec_user() { + if [ "$USER" != "$1" ]; then + exec sudo -u "$1" "$0" "$@" + else + return 0 + fi +} + +exec_user minecraft + +cd ~/bin || exit print_error() { >&2 printf '\033[31;1m%s\033[0m \033[1m%s\033[0m\n' ERROR: "$*" @@ -26,8 +35,8 @@ error_usage() { public_start() { if [ -n "$1" ]; then - mcscreen -d -m -S "$1" \ - "/srv/minecraft/bin/${1}" + screen -d -m -S "$1" \ + "./${1}" else error_usage fi @@ -36,7 +45,7 @@ public_start() { public_status() { if [ -n "$1" ]; then printf '\033[1m%s\033[0m : ' "$1" - if mcscreen -ls "$1" > /dev/null 2>&1; then + if screen -ls "$1" > /dev/null 2>&1; then echo "en cours d'exécution" else echo "non en cours d'exécution" @@ -48,26 +57,33 @@ public_status() { public_stop() { if [ -n "$1" ]; then - mcscreen -S "$1" -X stuff '^E^Ustop^M' + screen -S "$1" -X stuff '^E^Ustop^M' else error_usage fi } public_watch() { - mcscreen -dr "$1" + screen -dr "$1" +} + +public_active() { + screen -ls } public_list() { - mcscreen -ls + echo "Serveurs disponibles :" + ls --color=auto } verb="$1" shift case "$verb" in - start|status|stop|watch|list|usage) + start|status|stop|watch|active|list|usage) "public_${verb}" "$@" ;; + "") + public_active *) error_usage ;;