Skip to content

Instantly share code, notes, and snippets.

@drscream
Created April 8, 2014 18:00
Show Gist options
  • Save drscream/10163878 to your computer and use it in GitHub Desktop.
Save drscream/10163878 to your computer and use it in GitHub Desktop.
## pssh: http://code.google.com/p/parallel-ssh/
## i=interactive
function psshi() {
local -a psshopts=( -p 10 -t 0 -X "-q" -X "-T" -O LogLevel=INFO )
local psshdir="${HOME}/.pssh"
local hostfile="${psshdir}/hostgroups/${1}"; shift
[[ ! -d "${psshdir}" ]] && return 2
[[ ! -f "${hostfile}" || ! -s "${hostfile}" ]] && return 2
[[ -z "${@}" ]] && return 2
pssh "${psshopts[@]}" -h "${hostfile}" -i "${@}"
}
## c=capture
function psshc() {
local -a psshopts=( -p 10 -t 0 -X "-q" -X "-T" -O LogLevel=INFO )
local psshdir="${HOME}/.pssh"
local workdir="${psshdir}/work/${$}.${RANDOM}"
local outdir="${workdir}/out"
local errdir="${workdir}/err"
local hostfile="${psshdir}/hostgroups/${1}"; shift
[[ ! -d "${psshdir}" ]] && return 2
[[ ! -d "${workdir}" ]] && mkdir -pv "${workdir}" || return 2
[[ ! -d "${outdir}" ]] && mkdir -pv "${outdir}" || return 2
[[ ! -d "${errdir}" ]] && mkdir -pv "${errdir}" || return 2
[[ ! -f "${hostfile}" || ! -s "${hostfile}" ]] && return 2
[[ -z "${@}" ]] && return 2
pssh "${psshopts[@]}" -h "${hostfile}" -o "${outdir}" -e "${errdir}" "${@}"
pushd "${workdir}" &>/dev/null && (bash; true) && popd &>/dev/null
rm -rfv "${workdir}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment