From 36452c9e2d4a0decf20db0f49e2b64cb52d400c3 Mon Sep 17 00:00:00 2001 From: Flo Date: Sun, 14 May 2017 20:43:26 +0200 Subject: [PATCH] add options verbose/user/confdir --- README.md | 7 ++++++ csc | 68 ++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 59 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 91da8ba..395dae1 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/csc b/csc index 8095e7f..571afba 100755 --- a/csc +++ b/csc @@ -1,27 +1,63 @@ -#!/usr/bin/env bash +#!/bin/bash # csc : cluster ssh command -# ./csc # 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 " - 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