add options verbose/user/confdir
This commit is contained in:
parent
2465f9e115
commit
36452c9e2d
@ -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
68
csc
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user