一:下载
wget ftp://ftp.cn.debian.org/gentoo/distfiles/pssh-2.3.1.tar.gz
二:本地主机和远程主机单向信任
1:准备一个单独的用户
useradd crazy
su - crazy
2:在本地主机创建RSA密钥和公钥
mkdir ~/.ssh
chmod 700 ~/.ssh 设置权限保障安全
cd .ssh/
ssh-keygen 创建一对公私玥
3:远程拷贝在远程的主机
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh-copy-id [email protected]
ssh [email protected]
.....
不要密码直接登入
三:pssh安装
tar -xf pssh-2.3.1.tar.gz
cd pssh-2.3.1/
python setup.py install
四:pssh用法
安装完成后,产生5个程序
pssh:远程多台主机并运行命令
pscp:把文件并行复制到远程的多台主机上。类似scp
prsync:将文件同步到远程主机
pnuke:在远程多台主机上并行killall某进程
pslurp:把文件从多台远程主机复制到本地主机,与pscp相反
参数:
-h HOST_FILE 跟远程主机列表文件
-H HOST 跟远程主机地址
-l user 指定远程主机上的用户名
-p PAR 指定pssh最大并行线程数
-o outdir 将输出内容重定向到一个指定文件中
-O option 指定ssh参数的具体配置
-e errdir 将执行错误重定向到一个指定文件中
-t timeout 设置命令执行的超时时间
-A 提示输入密码,将密码传递给ssh服务
-x ARGS 用于传递ssh命令的一些参数,每个参数用""括起来,传递多个用空格分开
-X 只能传递指定的一个命令参数
-i 显示输出信息
-P 执行远程命令输出执行结果
五:实战应用
1:查看多台远程主机的负载
创建远程主机列表文件
cat ip.txt
[email protected]
[email protected]
[email protected]
查看负载
pssh -h ip.txt -i "uptime"
[1] 09:33:13 [SUCCESS] [email protected]
17:33:12 up 16:16, 0 users, load average: 0.00, 0.00, 0.00
[2] 09:33:13 [SUCCESS] [email protected]
17:04:27 up 21:54, 2 users, load average: 0.00, 0.00, 0.00
[3] 09:33:13 [SUCCESS] [email protected]
17:33:12 up 16:16, 0 users, load average: 0.00, 0.00, 0.00
2:批量创建文件和删除
pssh -h ip.txt -i "echo "Hello World">files"
pssh -h ip.txt -i "cat files"
pssh -h ip.txt -i "rm files"
pssh还可以批量安装软件,解压文件.....
pssh -h ip.txt -i "yum install httpd -y"
pssh -h ip.txt -i "service httpd start"
pssh -h ip.txt -i "netstat -antup | grep httpd"
3:批量复制文件到远程主机
pscp -h ip.txt /etc/ssh/sshd_config /tmp
pscp -h ip.txt -r /opt/zarp/ /tmp -r 递归
4:将远程主机文件批量复制到本地主机
pslurp -h ip.txt -L /home/crazy /etc/passwd passwd
pslurp -h ip.txt -r -L /home/crazy /etc/yum.repos.d yum
-r -L 参数位置不能颠倒
5:将本地主机文件或目录同步到远程主机上
prsync -h ip.txt -l root -a -r /var/www/ /var/www/
-a 权限,属性保持
-r 递归
/var/www /var/www 本地主机 远程主机
prsync -h ip.txt -l root -az -r /var/www/ /var/www/
-z压缩传输
6:远程杀掉进程
pnuke -h ip.txt httpd
其他轻量级自动化运维工具
pdsh
mussh
ClusterSSH