diff options
-rwxr-xr-x | shell | 28 |
1 files changed, 20 insertions, 8 deletions
@@ -1,6 +1,6 @@ #!/bin/bash # -# Simple $AUTOSSH and screen wrapper. +# Simple $AUTOSSH and terminal multiplexer wrapper. # # Parameters @@ -11,7 +11,9 @@ BASENAME="`basename $0`" DEST="$1" COMMAND="$2" -MULTIPLEXER="wscreen" +#LOCAL_MULTIPLEXER="wscreen" +LOCAL_MULTIPLEXER="wtmux" +REMOTE_MULTIPLEXER="screen -x" MONITORING="-M $(($RANDOM + 1024))" AUTOSSH="autossh $MONITORING" @@ -27,6 +29,16 @@ function window_title { fi } +# Check if a named session exists, screen version +function shell_wscreen_ls { + screen -ls $1 | grep -q "There is a screen on" +} + +# Check if a named session exists, tmux version +function shell_wtmux_ls { + tmux ls | grep -q ^$1: +} + # Syntax check if [ -z "$DEST" ]; then exit 1 @@ -39,18 +51,18 @@ window_title $DEST if [ "$BASENAME" == "shells" ]; then # Remote screen shell using $AUTOSSH if [ "$COMMAND" == "root" ]; then - $AUTOSSH $DEST -t -- sudo screen -x + $AUTOSSH $DEST -t -- sudo $REMOTE_MULTIPLEXER else - $AUTOSSH $DEST -t -- screen -x $COMMAND + $AUTOSSH $DEST -t -- $REMOTE_MULTIPLEXER $COMMAND fi else - if [ -z "$COMMAND" ] && screen -ls $DEST | grep -q "There is a screen on"; then + if [ -z "$COMMAND" ] && shell_${LOCAL_MULTIPLEXER}_ls $DEST; then # Local existing screen shell - $MULTIPLEXER $DEST + $LOCAL_MULTIPLEXER $DEST elif [ -z "$COMMAND" ] && [ "$DEST" == "root" ]; then # Local root shell window_title root - sudo screen -x + sudo $REMOTE_MULTIPLEXER elif [ -z "$COMMAND" ] && [ -f "$HOME/.screen/$DEST" ]; then # Local root shell window_title $DEST @@ -58,7 +70,7 @@ else elif [ "$DEST" == "local" ]; then # Local screen shell window_title $COMMAND - $MULTIPLEXER $COMMAND + $LOCAL_MULTIPLEXER $COMMAND else # Remote shell using $AUTOSSH $AUTOSSH $DEST -t -- $COMMAND |