From 86e1187a63680a2e1a139a33dfa7f73f84528eb7 Mon Sep 17 00:00:00 2001 From: James Pannacciulli Date: Fri, 23 Jan 2015 14:23:56 -0800 Subject: allow for more parameters, including ability to read hosts list from file --- pars.sh | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/pars.sh b/pars.sh index 79bc905..4e3544e 100644 --- a/pars.sh +++ b/pars.sh @@ -1,14 +1,38 @@ #!/bin/bash parssh () { - [[ "$1" == -[0-9]* && "$1" != *[^0-9-]* ]] && { - local parssh_concurrency=${1#-} - shift + while [[ "$1" == -* ]]; do + case ${1#-} in + [0-9]*) + [[ "${1#-}" != *[^0-9]* ]] && { + local parssh_concurrency=${1#-} + shift + } + ;; + fo|fouter) + [[ -f "$2" ]] || { + echo "'$2': invalid file name" + return 99 + } + local parssh_fouter="$2" + shift + shift + ;; + esac + done + + [[ -z "$parssh_fouter" ]] && { + exec 9<&0 + } || { + echo "reading $parssh_fouter" + exec 9<"$parssh_fouter" } + while read host; do while (( $(jobs -pr | wc -l) >= ${parssh_concurrency:-4} )); do sleep 1; done; ssh -no StrictHostKeyChecking=no $host "$@" & - done + done <&9 + exec 9>&- } -- cgit v1.2.3