#!/bin/sh # # cluster-ssh.sh, Copyright © 2013 Matteo Cypriani # # 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. # # Open an SSH interactive shell on a list of remote hosts, opening one # GNU Screen tab per host. print_usage() { echo "Usage: $0 [-l login] " } # Parse the optional arguments with getopt export POSIXLY_CORRECT=yes export GETOPT_COMPATIBLE=yes OPTSTRING="l:" ARGS=$(getopt $OPTSTRING $*) if [ $? -ne 0 ] ; then print_usage exit 1 fi set -- $ARGS while [ $# -ne 0 ] ; do case "$1" in -l) LOGIN="$2" shift shift ;; --) shift break ;; *) echo "Unknown argument:" $1 exit 2 esac done # Do we have only one argument left? if [ $# -ne 1 ] ; then print_usage exit 3 fi # Hosts' list file HOSTS="$HOME/.config/cluster/$1.lst" shift echo "Using file '$HOSTS' as hosts' list." # Login if [ "$LOGIN" != "" ] ; then echo "Login: $LOGIN" LOGIN="${LOGIN}@" fi # Create the screen tabs for HOST in $(cat "$HOSTS") ; do SSH="ssh ${LOGIN}${HOST}" screen -t "$SSH" $SSH done