WEB开发网
开发学院操作系统Linux/Unix 系统管理工具包: 使用 SSH 进行分布式管理 阅读

系统管理工具包: 使用 SSH 进行分布式管理

 2008-11-12 08:30:42 来源:WEB开发网   
核心提示: 到目前为止,您主要关注于在一台远程计算机中运行单个的命令或者命令字符串,系统管理工具包: 使用 SSH 进行分布式管理(5),尽管在直接使用 SSH 执行远程管理时,交互会话技巧非常有用,如下面的清单 7 所示,清单 7. 用于以远程的方式运行命令的 for 循环for remote in

到目前为止,您主要关注于在一台远程计算机中运行单个的命令或者命令字符串。尽管在直接使用 SSH 执行远程管理时,交互会话技巧非常有用,但是您可能希望实现这个过程的自动化,这意味着交互的组成部分未必非常有用。

要在多台计算机中以远程的方式运行相同的命令,您需要为 SSH 命令和远程命令(您希望运行的远程命令,以便在每台远程计算机上重复该过程)构建一个简单的包装。

您可以使用一个非常简单的 for 循环来完成这项任务,如下面的清单 7 所示。

清单 7. 用于以远程的方式运行命令的 for 循环

for remote in mc@gentoo.vm mc@redhat; do echo $remote; ssh $remote 'df -h'; done
mc@gentoo.vm
Filesystem      Size Used Avail Use% Mounted on
/dev/hda3       14G 4.1G 9.2G 31% /
udev         126M 564K 125M  1% /dev
/dev/hdc1       1.9G  56M 1.8G  4% /var/tmp
/dev/hdc2       1.9G 1.3G 558M 70% /usr/portage
/dev/hdc3       1.9G  35M 1.8G  2% /home/build
shm          126M   0 126M  0% /dev/shm
mc@redhat
Filesystem      Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
           7.1G 5.5G 1.3G 82% /
/dev/hda1       99M  13M  82M 14% /boot
none         125M   0 125M  0% /dev/shm

您可以很容易地将其转换为一个简单脚本,如清单 8 所示。

清单 8. 将 for 循环简化为简单的命令

#!/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
  ssh -oConnectTimeout=$TIMEOUT $machine $COMMAND >>$OUTLOG 2 >>$ERRLOG
done
cat $OUTLOG
cat $ERRLOG >&2
rm -f $OUTLOG $ERRLOG

上一页  1 2 3 4 5 6 7 8  下一页

Tags:系统 管理 工具包

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接