add options verbose/user/confdir

This commit is contained in:
Flo 2017-05-14 20:43:26 +02:00
parent 2465f9e115
commit 36452c9e2d
2 changed files with 59 additions and 16 deletions

View File

@ -1,3 +1,10 @@
# csc : cluster ssh command
simple script to execute command over ssh on remote hosts with "dialog" DEBIAN_FRONTEND
## Usage
Usage: csc [OPTION]... [COMMAND]
-v enable verbose mode
-c specify config dir, default is /$HOME/.config/csc
-u specify user, default is $USER

68
csc
View File

@ -1,27 +1,63 @@
#!/usr/bin/env bash
#!/bin/bash
# csc : cluster ssh command
# ./csc <command>
# launch command over ssh on cluster hosts with "dialog" DEBIAN_FRONTEND
VERBOSE=false
# Usage : csc [OPTION]... [COMMAND]
# options :
# -v enable verbose mode
# -c specify config dir, default is $HOME/.config/csc
# -u specify user, default is $USER
# TODO clush like
HOSTS="$HOME/.config/csc/hosts"
# defaults
verbose=false
confdir="$HOME/.config/csc"
user=$USER
if [ ! -e "$HOSTS" ]
# get options
while getopts ":vc:u:" opt; do
case $opt in
v)
verbose=true
;;
c)
confdir=$OPTARG
;;
u)
user=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
# clean $@ of options
shift $((OPTIND-1))
hosts="$confdir/hosts"
if [ ! -e "$hosts" ]
then
echo "hosts file do not exists !"
echo "Error: hosts file do not exists !"
exit
fi
COMMAND=$@
cmd=$@
if [ -z "$COMMAND" ]
if [ -z "$cmd" ]
then
echo "command is missing"
echo "USAGE: $0 <command>"
exit
echo "Error : command is missing"
echo "Usage: csc [OPTION]... [COMMAND]"
echo " -v enable verbose mode"
echo " -c specify config dir, default is $HOME/.config/csc"
echo " -u specify user, default is $USER"
exit 1
fi
# see http://askubuntu.com/questions/506158/unable-to-initialize-frontend-dialog-when-using-ssh
@ -29,18 +65,18 @@ fi
FRONTEND="TERM=$TERM DEBIAN_FRONTEND=dialog"
#FRONTEND="DEBIAN_FRONTEND=readline"
if [ "$VERBOSE" = true ]
if [ "$verbose" = true ]
then
echo "will do :"
echo "for i in `cat $HOSTS`; do ssh -t \$i "$FRONTEND $COMMAND"; done"
echo "for i in `cat $hosts | grep -v '^#'`; do ssh -t $user@\$i "$FRONTEND $cmd"; done"
fi
for i in `cat $HOSTS`
for i in `cat $hosts`
do
echo -e "\e[34m---------------\e[0m"
echo -e "\e[34m$i\e[0m"
echo -e "\e[34m---------------\e[0m"
ssh -t $i "$FRONTEND $COMMAND"
ssh -t $user@$i "$FRONTEND $cmd"
done
exit