1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #/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 <kolter@openics.org>
- #
- # 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
|