并行SSH运维工具pssh( 二 )


并行SSH运维工具pssh

文章插图
图2 远程服务器列表
并行SSH运维工具pssh

文章插图
图3 通过pssh获取的远程服务器负载信息
这个操作中用到了“-O”参数,后面跟的“StrictHostKeyChecking=no”是sshd服务的配置文件ssh_config中的一个选项,通过设置这个参数,可以让自动接受本地的hostkey,而不用每次都要手动输入yes 。后面还用到了“-h”参数,通过这个参数可以指定一个需要连接的列表,文件内容如图2所示 。在这个文件中省略了用户名和连接端口,那么pssh将自动使用当前用户opsuser和默认端口22 。
从图3的输出结果看,获取的负载信息不是按照列表的顺序显示的,这刚好说明pssh的并发执行特性 。
pssh可调用tar命令解压上的文件,例如:
[opsuser@server ~]$ pssh -i -h /etc/pssh/hosts "tar -zxvf hadoop-2.0.0-cdh4.5.0.tar.gz"
在这个例子中,pssh默认解压的是上/home/opsuser/hadoop-2.0.0-cdh4.5.0.tar.gz文件,而要解压root用户下的文件,可以执行如下操作:
[opsuser@server ~]$ pssh -i -h /etc/pssh/hosts > "sudo "tar -zxvf /mnt/hadoop-2.0.0-cdh4.5.0.tar.gz -c /mnt" "
在这个例子中,pssh调用了“sudo”命令,因此,要操作具有root权限的文件时,opsuser用户在上必须开通可通过sudo命令切换到root用户的权限 。
pssh也可批量删除上指定的文件或目录,例如:
[opsuser@server ~]$ pssh -i -h /etc/pssh/hosts > "sudo "rm -rf /mnt/hadoop-2.0.0-cdh4.5.0" "
类似的例子有很多,比如通过pssh还可以在上安装软件、启动系统服务等,看下面两个例子:
[opsuser@server ~]$ pssh -i -h /etc/pssh/hosts "sudo "yum -y install pssh" "
[opsuser@server ~]$ pssh -i -h /etc/pssh/hosts "sudo "/etc/init..d/gmond start" "
下面这个操作是pssh的综合应用实例:
[opsuser@server ~]$ pssh -i -x "-l opsuser" "-p 9529" -h /etc/pssh/hosts > -o /etc/pssh/info "uptime;uname -a"
这个实例用到了“-x”参数,分别调用了ssh命令的两个参数“-l”和“-p”,用于指定在上登录的用户名和端口,而“-o”参数指定将输出结果存放到/etc/pssh/info目录中 。在此实例的最后指定了要在上执行的命令,可以指定多个命令,每个命令之间用分号隔开 。
(2)pscp与pslurp应用实例
pscp命令的主要作用是将本地文件并行地复制到多台上,而pslurp是把文件从 多台复制到本地,这两个命令的功能刚好相反 。在工作中,需要进行文件批量传送时,这两个命令非常有用 。
首先看pscp的两个应用实例,如图4所示 。
并行SSH运维工具pssh

文章插图
图4 pscp应用实例
图4中第一个例子是将本地上的/etc/ssh/ssh_config文件复制到的/tmp目录下,这是pscp最简单的用法,如果要复制的文件比较多,一个一个执行就非常麻烦,此时可以通过复制目录的方式实现 。第二个例子就是将本地的/etc/httpd/conf目录复制到的/tmp目录下,在进行目录复制时,用到了“-r”参数,表示递归地复制指定目录下的所有文件 。这里需要注意权限问题,指定上的目标路径一定是当前用户可读写的,否则会发生错误 。
完成复制后,在上查看复制过来的目录,结构如下:
[opsuser@user001 ~]$ ls -ld /tmp/conf drwxr -xr-x 2 opsuser opsuser 4096 Jan 5 16:06 /tmp/conf
接下来再看pslurp的两个应用实例,如图5所示 。
并行SSH运维工具pssh

文章插图
图5 pslurp应用实例
图5中第一个例子是将所有上的/home/opsuser/gmond.conf文件复制到本地的/home/opsuser/test目录下,并将文件改名为gmond1.conf,这里面用到了“-L”参数,用来指定本地路径,这个路径是个目录,用于存储从传输过来的文件 。第二个例子是将所有上的/home/opsuser/gmond目录复制到本地的/home/opsuser/test目录下,并将复制过来的目录改名为gmond1,这里面也用到了“-r”和“-L”参数,需要注意这两个参数的顺序不能颠倒 。
完成数据复制后,在本地的/home/opsuser/test目录下存放着所有以名命名的目录,这里以user001为例,查看复制过来的文件,结果如图6所示 。
并行SSH运维工具pssh

文章插图
图6 pslurp复制远程文件结构图
(3)prsync与pnuke应用实例
prsync的主要作用是通过rsync协议将文件或目录从本地同步到多个上,先看prsync的两个应用实例,如图7所示 。


推荐阅读