| 
					
				 | 
			
			
				@@ -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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |