Browse Source

Add multi-ssh script (ssh multiplexer through tmux)

Emmanuel Bouthenot 14 years ago
parent
commit
97df44011d
1 changed files with 56 additions and 0 deletions
  1. 56 0
      .zsh.d/bin/mssh

+ 56 - 0
.zsh.d/bin/mssh

@@ -0,0 +1,56 @@
+#/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
+