45 lines
886 B
Bash
45 lines
886 B
Bash
#!/bin/sh
|
|
|
|
BASEDIR=$(cd $(dirname "${BASH_SOURCE[0]}")/.. && pwd)
|
|
SSH_KEY=${BASEDIR}/$(ls ${BASEDIR} | egrep '.pem$' | head -n 1)
|
|
|
|
if [ $# -lt 1 ]; then
|
|
>&2 echo "Execute command on each host."
|
|
>&2 echo "Usage: $0 <cmd> | $0 -f <file>"
|
|
exit 1
|
|
fi
|
|
|
|
NOMASTER=0
|
|
if [ "$1" == "--no-master" ]; then
|
|
NOMASTER=1
|
|
shift
|
|
fi
|
|
|
|
if [ "$1" == "-f" ]; then
|
|
file=$2
|
|
else
|
|
cmd="$@"
|
|
fi
|
|
|
|
user=$(whoami)
|
|
N=0
|
|
for host in $(cat ${BASEDIR}/hosts | grep -v "^#" | awk '{print $1}')
|
|
do
|
|
if [ "${NOMASTER}" == "1" ] && cat ${BASEDIR}/hosts | grep "master" | grep ${host} >/dev/null
|
|
then
|
|
continue
|
|
fi
|
|
|
|
N=$(expr ${N} + 1)
|
|
if [ "x${cmd}" != "x" ]; then
|
|
exe_cmd=$(echo "${cmd}" | sed "s/\${N}/${N}/")
|
|
echo "${user}@${host}> ${exe_cmd}"
|
|
echo "${exe_cmd}" | ssh -T ${host}
|
|
else
|
|
echo "${user}@${host}> ${file}"
|
|
${file}> ssh -T ${host}
|
|
fi
|
|
echo "(exit $?)"
|
|
echo ""
|
|
done
|