From f137425d666429172f990c6a7c5e5af7ab2bf99d Mon Sep 17 00:00:00 2001 From: James Pannacciulli Date: Fri, 23 Jan 2015 16:18:30 -0800 Subject: allow an inner file specification (file to be passed to ssh) --- pars.sh | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/pars.sh b/pars.sh index 4e3544e..819153b 100644 --- a/pars.sh +++ b/pars.sh @@ -1,6 +1,8 @@ #!/bin/bash parssh () { + local origopts=$- + set -m while [[ "$1" == -* ]]; do case ${1#-} in [0-9]*) @@ -10,29 +12,43 @@ parssh () { } ;; fo|fouter) - [[ -f "$2" ]] || { - echo "'$2': invalid file name" + [[ -r "$2" ]] || { + echo "'$2': invalid file name or permissions issue" return 99 } local parssh_fouter="$2" shift shift ;; + fi|finner) + [[ -r "$2" ]] || { + echo "'$2': invalid file name or permissions issue" + return 98 + } + local parssh_finner="$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 "$@" & + sleep 1 + done + if [[ -z "$parssh_finner" ]]; then + ssh -no StrictHostKeyChecking=no $host "$@" & + else + ssh -To StrictHostKeyChecking=no $host "$@" < "$parssh_finner" & + fi done <&9 + wait exec 9>&- + [[ "${origopts//[^m]/}" == "m" ]] || set +m } -- cgit v1.2.3