#/bin/sh # # -*- mssh -*- # # mssh: ssh multiplexer using tmux # # (following the excellent idea of Christoph Egger: # http://www.christoph-egger.org/weblog/entry/33) # # Author: 2011, Emmanuel Bouthenot # # This program is free software. It comes without any warranty, to # the extent permitted by applicable law. You can redistribute it # and/or modify it under the terms of the Do What The Fuck You Want # To Public License, Version 2, as published by Sam Hocevar. See # http://sam.zoy.org/wtfpl/COPYING for more details. # internal=0 internal_opt="--internal" usage() { printf "Usage: %s host1 ... hostN\n" $1 } if [ "$1" = "$internal_opt" ]; then internal=1 shift fi TMUXBIN=$(which tmux) if [ $? != 0 ]; then printf "Error: %s needs tmux to run, could't find it in \$PATH\n" "$(basename "$0")" exit 1 fi if [ -n "$TMUX" ] && [ $internal = 0 ]; then printf "Error: %s should not be run inside tmux\n" "$(basename "$0")" exit 1 fi if [ $# = 0 ]; then usage exit 2 fi if [ $internal = 1 ]; then for i in $* ; do $TMUXBIN splitw "ssh $i" $TMUXBIN select-layout tiled done $TMUXBIN set-window-option synchronize-panes on else $TMUXBIN new "exec $(readlink -f "$0") "$internal_opt" $*" fi