系统管理工具包: 使用 SSH 进行分布式管理
2008-11-12 08:30:42 来源:WEB开发网清单 9. 几乎同时执行远程命令的脚本
#!/bin/bash
# Script to run a command across multiple machines
# Global options
TIMEOUT=10
ERRLOG=/tmp/remote-err-$$.log
OUTLOG=/tmp/remote-out-$$.log
# Extract the command line
MACHINES=$1;shift
COMMAND=$1;shift
for machine in $MACHINES
do
echo $machine >>$OUTLOG.$machine
ssh -oConnectTimeout=$TIMEOUT $machine $COMMAND >>$OUTLOG.$machine
2>>$ERRLOG.$machine &
done
# Wait for children to finish
wait
cat $OUTLOG.*
cat $ERRLOG.* >&2
rm -f $OUTLOG.* $ERRLOG.*
在这个脚本中,您还将计算机名回显到命令日志(对所提供的每台计算机来说是唯一的)。要确保该脚本不会在执行所有的远程命令之前退出,您需要添加一个 wait 命令,以等待该脚本的所有子操作执行结束。
现在您可以使用该脚本同时检查多台计算机(请参见清单 10)。
清单 10. 使用这个脚本同时检查多台计算机
$ runremote2.sh "narcissus gentoo.vm droopy@nostromo mcbrown@nautilus" 'uptime'
droopy@nostromo
19:15 up 9 days, 23:42, 1 user, load averages: 0.01 0.03 0.00
gentoo.vm
18:10:23 up 1 day, 10:02, 2 users, load average: 1.72, 1.84, 1.79
mcbrown@nautilus
19:15 up 10:08, 4 users, load averages: 0.40 0.37 0.29
narcissus
19:15 up 8 days, 7:04, 4 users, load averages: 0.53 0.54 0.57
更多精彩
赞助商链接