diff options
author | James Pannacciulli <jpnc@jpnc.info> | 2015-01-23 14:23:56 -0800 |
---|---|---|
committer | James Pannacciulli <jpnc@jpnc.info> | 2015-01-23 14:23:56 -0800 |
commit | 86e1187a63680a2e1a139a33dfa7f73f84528eb7 (patch) | |
tree | 2988b5ca71863e14951043f14c3c3188e51b87cd | |
parent | 110e5d9e5ebb9237adcc2d4c90ed18d829ed7d28 (diff) | |
download | parssh-86e1187a63680a2e1a139a33dfa7f73f84528eb7.tar.gz parssh-86e1187a63680a2e1a139a33dfa7f73f84528eb7.tar.bz2 |
allow for more parameters, including ability to read hosts list from file
-rw-r--r-- | pars.sh | 32 |
1 files changed, 28 insertions, 4 deletions
@@ -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>&- } |