首页 > 代码库 > tree老师:PSSH自动化运维实战

tree老师:PSSH自动化运维实战

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

pssh是用python来写的一个管理工具,管理几万台服务器,就是因为使用各式各样的工具。

如果服务器超过50台,上百台,就不能再用shell来写个for循环来执行了,这时候就会用到pssh.

pssh 包安装 5 个实用程序:

pssh 在多个主机上并行地运行命令。

pscp 把文件并行地复制到多个主机上。

prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。

pslurp 把文件并行地从多个远程主机复制到中心主机上。

pnuke 并发地在多个远程主机上杀死进程。

PSSH相关参数:

pssh在多个主机上并行地运行命令

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

如test@172.16.10.10:229

-H 执行命令主机,主机格式 user@ip:port

-l 远程机器的用户名

-p 一次最大允许多少连接

-P 执行时输出执行信息

-o 输出内容重定向到一个文件

-e 执行错误重定向到一个文件

-t 设置命令执行超时时间

-A 提示输入密码并且把密码传递给ssh(如果私钥也有密码也用这个参数)

-O 设置ssh一些选项

-x 设置ssh额外的一些参数,可以多个,不同参数间空格分开

-X 同-x,但是只能设置一个参数

-i 显示标准输出和标准错误在每台host执行完毕后

安装部署:

wget  http://www.theether.org/pssh/pssh-1.4.3.tar.gz   [root@xuegod63 ]# tar -zxvf pssh-1.4.3.tar.gz

[root@xuegod63 test]# cd pssh-1.4.3

[root@xuegod63 pssh-1.4.3]# ls

AUTHORS BUGS       COPYING  INSTALL  PKG-INFO       psshlib    setup.py 

bin     ChangeLog  doc      Makefile pssh.egg-info  setup.cfg  test

[root@xuegod63 pssh-1.4.3]# python setup.py install

pssh的版本会影响是否可以传密码,-A是传密码的

1.4.3的版本没有传密码的功能

建立ssh秘钥:

[root@xuegod63 test]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

ca:6a:0a:55:cf:55:91:f7:b9:fd:71:11:62:95:cd:7d root@xuegod63.cn

The key‘s randomart image is:

+--[ RSA 2048]----+

|          oo  .o+|

|         .. .o oE|

+-----------------+

[root@xuegod63 test]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.1.64

[root@xuegod63 test]# ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.1.63

[root@xuegod63 test]# cat list.txt

192.168.1.63

192.168.1.64

远程执行命令:

[root@xuegod63 test]# pssh -i -h list.txt ‘df -h‘

[1] 11:33:40 [SUCCESS] 192.168.1.64 22

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        18G  3.8G  13G  23% /

tmpfs          1004M   76K 1004M  1% /dev/shm

/dev/sda1       194M   34M 151M  19% /boot

/dev/sr0        3.6G  3.6G    0 100% /mnt

[2] 11:33:40 [SUCCESS] 192.168.1.63 22

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2        18G  6.2G  11G  38% /

tmpfs           932M  224K 931M   1% /dev/shm

/dev/sda1       190M   41M 140M  23% /boot

/dev/sr0        3.7G  3.7G    0 100% /media/CentOS_6.7_Final

 

远程执行:

pssh -i -h list.txt ‘df -h’

pssh -I -h list.txt ‘ifconfig’

pscp 传输文件

pscp -r -h list.txt  /root/passh /tmp

1.使用脚本远程拷贝文件,把本地文件拷贝到远程服务器

[root@xuegod63 test]# cat a.txt

#!/bin/sh

if [ $# -ne 2 ];then

    echo "Usage:scpl2r.sh localfile remotefile"

    exit

fi

srcfile=$1

dstfile=$2

 

PSCP=/usr/local/bin/pscp

$PSCP -h /root/test/list.txt -l root $srcfile $dstfile

执行:

root@xuegod63 test]# sh a.txt /root/test/aa  /root/

查看:

[root@xuegod63 ~]# ls

aa

[root@xuegod64 ~]# ls

aa 

缺点:
1. 在执行命令的时候,所有的输出只能够存放到一个文件中,有些不方便
2. 必须使用密钥登录

优点:
1. 可以指定不同的登录用户
2. 支持scp功能,包括从本地拷贝文件到远端,从远端拷贝文件到本地


本文出自 “架构师社区” 博客,请务必保留此出处http://tree01.blog.51cto.com/12334198/1877030

tree老师:PSSH自动化运维实战