PSSH,PDSH,MUSSH并行批量操作

来源:互联网 发布:centos 6.4 登陆 编辑:程序博客网 时间:2024/05/22 17:29

pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问。


'''介绍pssh参数'''  pssh   在多个主机上并行地运行命令

       -h 执行命令的远程主机列表  或者 -H user@ip:port  文件内容格式[user@]host[:port]

       -l 远程机器的用户名

       -P 执行时输出执行信息

       -p 一次最大允许多少连接
       -o 输出内容重定向到一个文件
       -e 执行错误重定向到一个文件
       -t 设置命令执行的超时时间
       -A 提示输入密码并且把密码传递给ssh
       -O 设置ssh参数的具体配置,参照ssh_config配置文件
       -x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
       -X 同-x 但是一次只能传递一个命令
       -i 显示标准输出和标准错误在每台host执行完毕后


其它命令:

        pscp     传输文件到多个hosts,类似scp

        pslurp   从多台远程机器拷贝文件到本地

        pnuke    并行在远程主机杀进程

        prsync   使用rsync协议从本地计算机同步到远程主机


== 实例 ==

pssh -i -h /etc/pssh/hosts  "tar -zxvf hadoop-2.0.0-cdn4.5.0.tar"            批量执行命令


pssh

[plain] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $ pssh -h ip.txt -l root chkconfig --level 2345 snmpd on  
  2. [1] 10:59:29 [SUCCESS] ... ...  
  3. [2] 10:59:29 [SUCCESS] ... ...  
  4. [3] 10:59:29 [SUCCESS] ... ...  
  5. ... ...  

pscp
[plain] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. $ pscp -h ip.txt -l root /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf  
  2. [1] 11:00:42 [SUCCESS] ... ...  
  3. [2] 11:00:42 [SUCCESS] ... ...  
  4. [3] 11:00:42 [SUCCESS] ... ...  
  5. ... ...  

PDSH:


pdsh的应用场景基本上与pssh相同,都用于大批量服务器的配置、部署、文件复制等运维操作。在使用pdsh时,仍需要配置本地主机和远程主机间的单向ssh信任。另外,pdsh还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上,这在大规模的文件分发环境下是非常有用的。

pdsh可以通过多种方式在远程主机上运行命令,默认是rsh方式,另外也支持ssh、mrsh、qsh、mqsh、krb4、xcpu等多种rcmd模块,这个可以在运行命令时通过参数指定。

[root@server ~]# tar jxvf pdsh-2.29.tar.bz2

[root@server ~]# cd pdsh-2.29

[root@server pdsh-2.29]#./configure --with-ssh --with-rsh --with-mrsh --with-mqshell  \

> --with-qshell  --with-dshgroups --with-machines=/etc/pdsh/machines

[root@server pdsh-2.29]# make

[root@server pdsh-2.29]# make install

在执行configure阶段,“--with-ssh”参数表示启用ssh模块,其他参数都有类似的含义,而“--with-dshgroups”表示启用主机组支持,启用此参数后,就可以将一组主机列表写入一个文件并放到~/.dsh/group或/etc/dsh/group目录下,然后通过pdsh的“-g”参数进行调用。最后的参数“--with-machines”是“--with-dshgroups”参数的扩展,通过将所有要管理的主机列表都写入指定的/etc/pdsh/machines文件中,接着通过pdsh的“-a”参数调用,最终完成所有主机的便捷管理。

完成安装后,可以通过“pdsh �V”查看pdsh的版本号以及可使用的模块信息,操作如下:

[opsuser@server ~]$ pdsh -V

pdsh-2.29

rcmd modules: ssh,rsh,exec (default: rsh)

misc modules: machines,dshgroup

此外,也可以通过“pdsh -L”来显示当前所有加载的模块信息。在pdsh安装完成后,还有一个可用的工具pdcp,后面将详细讲述pdsh和pdcp两个命令的用法。

-w host,host 指定远程主机,可以指定多个,每个主机用逗号隔开,host可以是主机名也可以是IP地址。此参数非常灵活,常用的形式有:

pdsh -w ssh:user001,ssh:user002,ssh:user003 "date"

此命令用来查看user001、user002、user003主机上的时间,其中ssh表示在远程主机上执行命令的形式,默认是rsh。

pdsh -w ssh:user00[1-10] "date"

此命令用于在user001到user0010上执行date命令。

pdsh -w ssh:user0[10-31],/1$/ "uptime"

此命令在选择远程主机时使用了正则表达式,表示在user010到user031中选择以1结尾的主机名,即在user011、user021、user031上执行uptime命令

-R 指定使用rcmd的模块名,默认是rsh。如果要选择ssh,可以通过如下方式指定:

pdsh -R ssh -w user00[1-10] "date"

-l 指定在远程主机上使用的用户名称。例如:

pdsh -R ssh -l opsuser -w user00[1-9] "date"

-x 此参数用来排除某些或某个主机,例如:

pdsh -R ssh -l opsuser -w user00[1-9] -x user005,user007 "date"

-t 指定连接远程主机的超时时间,以秒为单位,默认是10秒,可以通过此参数修改默认值,例如:pdsh -R ssh -w slave000[1-9]  -t 15  "date"

-u 设置远程命令执行的超时时间,以秒为单位,以ssh方式连接时,默认时间为无限

-f 设置同时连接到远程主机的个数

-N 此参数用来关闭远程主机所返回结果中的主机名显示

-a 通过此参数可以指定所有的远程主机,设置此参数后,pdsh默认会查看/etc/machines文件中的主机列表,要改变此路径,在编译pdsh时通过“--with-machines”参数指定即可

-g 此参数用来指定一组远程主机,在编译pdsh时可以通过“--with-dshgroups”参数来激活此选项,默认可以将一组主机列表写入一个文件中并放到本地主机的~/.dsh/group或/etc/dsh/group目录下,这样就可以通过“-g”参数调用了。例如:pdsh -R ssh -g userhosts "date",其中“userhosts”是一个主机列表文件,可以将此文件放在~/.dsh/group或/etc/dsh/group目录下

-X 此参数用来排除指定组内的所有主机,经常与“-a”参数一起使用。例如:

pdsh -R ssh -a -X userhosts  "date"

-q 此参数可以列出pdsh执行时的一些配置信息

-V 此参数可以查看软件的版本信息以及可用的模块信息

PDSH后面不接命令可进入交互模式。



MUSSH


是前两个的补充:

mossh -o "port = 22" -H myhosts -s /usr/bin/python -C "/home/opsuser/checkos.py"    #执行脚本


0 0
原创粉丝点击