openssh是一个安全登录的工具,执行的命令为ssh your_hostname,然后输入密码,就可以登录远端机器了。或者登录后执行一个命令立即返回:ssh your_hostname echo 1。很多时候需要在很多机器上执行同一命令,这固然可以写个shell的for循环来完成,但这是串行的执行,pssh等工具可以并行执行,当命令很耗时的时候,相对于串行执行的优势就很明显了。其他类似的工具还有 Cluster SSH, 和 ClusterIt,fabric也是类似的工具,串行还是并行是可配置的。
pssh包含的工具有pssh,pscp,prsync和pnuke。
如下面:
# pssh -h hosts-file -l ben -P date
-h指定一个文件,文件中每行一个host,可以用 PSSH_HOSTS环境变量代替
-l指定以什么用户登录远程机器,可以用PSSH_USER环境变量代替
-P表示将输出打印到标准输出,默认是不打印的,只显示成功/失败
最后的date就是自己的命令了
另外:
-i会对输出进行分组
--outdir your_dir不直接输出结果,而是将结果写入目录下的文件,按host命名
--timeout超时,默认60s
-----------------------------------------------------
文档:http://www.theether.org/pssh/docs/0.2.3/pssh-HOWTO.html
下载rpm包: http://www.theether.org/pssh/pssh-1.4.3-1.noarch.rpm
运维的几件事(拷过去,拷过来,执行远程指令)理论上都可以通过pscp/prsync, pslurp , pssh来完成。
pscp -h host_file -l chenming-xy -P -i check.sh /home/chenming-xy/check.sh
pssh -h host_file -l chenming-xy -P -i "ls /home"
pslurp -h host_file -l chenming-xy -P -i -o your_dir /home/chenming-xy/check.sh