pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。使用是必须在各个服务器上配置好密钥认证访问。
pssh是用python来写的一个管理工具,管理几万台服务器,就是因为使用各式各样的工具。
如果服务器超过50台,上百台,就不能再用shell来写个for循环来执行了,这时候就会用到pssh.
pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并发地在多个远程主机上杀死进程。
PSSH相关参数:
pssh在多个主机上并行地运行命令
-h 执行命令的远程主机列表,文件内容格式[[email protected]]host[:port]
如[email protected]:229
-H 执行命令主机,主机格式 [email protected]: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 [[email protected] ]# tar -zxvf pssh-1.4.3.tar.gz
[[email protected] test]# cd pssh-1.4.3
[[email protected] pssh-1.4.3]# ls
AUTHORS BUGS COPYING INSTALL PKG-INFO psshlib setup.py
bin ChangeLog doc Makefile pssh.egg-info setup.cfg test
[[email protected] pssh-1.4.3]# python setup.py install
pssh的版本会影响是否可以传密码,-A是传密码的
1.4.3的版本没有传密码的功能
建立ssh秘钥:
[[email protected] 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 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
| oo .o+|
| .. .o oE|
+-----------------+
[[email protected] test]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] test]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[[email protected] test]# cat list.txt
192.168.1.63
192.168.1.64
远程执行命令:
[[email protected] 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.使用脚本远程拷贝文件,把本地文件拷贝到远程服务器
[[email protected] 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
执行:
[email protected] test]# sh a.txt /root/test/aa /root/
查看:
[[email protected] ~]# ls
aa
[[email protected] ~]# ls
aa
缺点:
1. 在执行命令的时候,所有的输出只能够存放到一个文件中,有些不方便
2. 必须使用密钥登录
优点:
1. 可以指定不同的登录用户
2. 支持scp功能,包括从本地拷贝文件到远端,从远端拷贝文件到本地