使用pssh工具进行批量管理与一次性部署多台服务器


一.pssh简介
pssh的目标也是简化大量计算机的管理。除了具备dsh的所有功能之外,pssh还可以把文件从一组系统复制到中心服务器或反向复制,以及杀死一组系统上的进程。这个shell和它的底层库是用Python编写的,如果系统上已经安装了Python解释器和核心库,就很容易安装它。

二.pssh的安装(ubuntu)
	1、sudo apt-get install pssh
	2、安装完pssh后,输入pssh,也许会提示:No command 'pssh' found, did you mean:...

	一条命令解决:
		echo "alias pssh=parallel-ssh" >> ~/.bashrc && . ~/.bashrc
	其中&& . ~/.bashrc代表立即生效。
	3、设置相关命令
	安装完pssh后,实际上还安装了pscp、prsync、pnuke和pslurp。和pssh命令无效的问题相同,它们默认也只能使用全名,不能只用简称。需要执行如下命令:
	echo "alias pscp=parallel-scp" >> ~/.bashrc && . ~/.bashrc
	echo "alias prsync=parallel-rsync" >> ~/.bashrc && . ~/.bashrc
	echo "alias pnuke=parallel-nuke" >> ~/.bashrc && . ~/.bashrc
	echo "alias pslurp=parallel-slurp" >> ~/.bashrc && . ~/.bashrc
其中,pscp把文件并行地复制到多个客户机;prsync使用rsync协议从管理机同步到客户机;pslurp将文件从客户机复制到管理机;pnuke并行地在客户机杀进程。

三.pssh的命令格式
	命令格式:pssh [OPTIONS] command [...]
	选项[OPTIONS]:
		--version:查看版本
		--help:查看帮助,即此信息
		-h:主机文件列表,内容格式"[user@]host[:port]"
		-H:主机字符串,内容格式"[user@]host[:port]"
		-l:登录使用的用户名
		-p:并发的线程数【可选】
		-o:输出的文件目录【可选】
		-e:错误输入文件【可选】
		-t:TIMEOUT 超时时间设置,0无限制【可选】
		-O:SSH的选项
		-v:详细模式
		-A:手动输入密码模式
		-x:额外的命令行参数使用空白符号,引号,反斜线处理
		-X:额外的命令行参数,单个参数模式,同-x
		-i:每个服务器内部处理信息输出
		-P:打印出服务器返回信息

四.pssh的使用设置
	参考Linux之SSH密钥认证和ssh使用密钥进行认证,在管理机上制作密钥对,将公钥添加给客户机,然后通过ssh免密登录(pssh必须要设置成免密登录才可以使用
	1、确认管理机和客户机都安装了ssh
		ps aux | grep ssh
	2、在管理机上创建密钥对
		ssh-keygen
		注意查看提示,如果出现提示系统已经生成了ssh-key,则不必生成
		如果需要重新生成ssh-key,所有的提示按enter键即可,也可以根据自己的需要输入自己的选项		不管是已经存在抑或是重新生成:注意查看提示的保存所生成的ssh-key的存放目录				完成以后进入到保存ssh-key的目录, 就可以看到id_rsa和id_rsa.pub文件)
	3、把公钥拷贝到所有客户机中(我这里的保存路径就是:/root/.ssh/ 目录下)
		ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 ubuntu@192.168.3.8
		这一步会提示需要输入密码
	4、测试登录
		上一步拷贝完成后,会提示使用ssh -p '22' 'ubuntu@192.168.3.8'测试登录。
	在管理机中,使用命令: ssh ubuntu@192.168.3.8 测试登录,我们发现已经不需要输入	密码了。
	5、查看公钥
		登录192.168.3.8 客户机,ll .ssh,我们发现有一个authorized_keys文件,文件的	内容和管理机的id_rsa.pub相同。
	6、测试命令
		ssh ubuntu@192.168.3.8 'ifconfig'
		返回了192.168.3.8 客户机的ifconfig执行结果,测试成功。
	7、设置sudo命令免密码(有时候需要使用sudo执行一些超级权限的命令, 需要设置成免密码)
		ssh ubuntu@192.168.3.8 'sudo iptables --list'
		报错:sudo: no tty present and no askpass program specified
		这个问题,需要在每个客户机下进行sudo免密设置。
		进入客户机之后,sudo vim /etc/sudoers,添加:
			ubuntu ALL = NOPASSWD: ALL
			注意, 这里的 ubuntu 是登录用户的名称
		再次执行ssh ubuntu@192.168.3.8 'sudo iptables --list',成功。

五.批量管理操作
	1.在 管理中心服务器 创建一个 管理目标服务器 的地址文件
		vim client_server_hosts.txt

		lowbuntu@192.168.3.25
		ubuntu@192.168.3.8
		diaosi@192.168.3.114

		格式为: 用户名称@IP, 根据实际需要管理的服务器的多少进行增减
		然后就可以通过pssh工具指定载入该文件的信息, 对上面的管理目标服务器进行批量操作了

	2.上传文件
		pscp -h client_server_hosts.txt   本地文件目录   管理目标服务器的目录
		
		注意: 这里是使用pscp工具,  -h  指明主机文件列表的路径

	3.批量执行命令
		pssh -h client_server_hosts.txt    -i   “命令”
		
		也可以将所有命令封装在一个脚本里, 向将脚本上传至各个管理目标服务器, 再执行该脚本

		注意:  这里使用的是 pssh 工具,  -i  :  每个服务器内部处理信息输出, 如果配置了多个管理目标服务器, 那么就会按序将信息进行输出如:

root@lowbuntu:~# pssh -h hosts.txt -i "ifconfig"

[1] 11:41:33 [SUCCESS] lowman@192.168.3.25
docker0   Link encap:以太网  硬件地址 02:42:a9:fd:76:fc  
          inet 地址:172.17.0.1  广播:172.17.255.255  掩码:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  跃点数:1
          接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:0 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:0 
          接收字节:0 (0.0 B)  发送字节:0 (0.0 B)

eno1      Link encap:以太网  硬件地址 b4:2e:99:10:ad:2c  
          inet 地址:192.168.3.25  广播:192.168.3.255  掩码:255.255.255.0
          inet6 地址: fe80::b426:5f85:cef7:e10a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:8186 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:4650 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:2303168 (2.3 MB)  发送字节:819254 (819.2 KB)
          中断:16 Memory:a1100000-a1120000 

lo        Link encap:本地环回  
          inet 地址:127.0.0.1  掩码:255.0.0.0
          inet6 地址: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  跃点数:1
          接收数据包:26321 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:26321 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:5204167 (5.2 MB)  发送字节:5204167 (5.2 MB)

[2] 11:41:33 [SUCCESS] ubuntu@192.168.3.8
docker0   Link encap:Ethernet  HWaddr 02:42:97:34:72:30  
          inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eno1      Link encap:Ethernet  HWaddr e0:d5:5e:d1:e8:e4  
          inet addr:192.168.3.8  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::587e:7955:2:6eac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14018182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3614888 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1901350082 (1.9 GB)  TX bytes:1589854113 (1.5 GB)
          Interrupt:16 Memory:a1100000-a1120000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:25811640 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25811640 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5597166323 (5.5 GB)  TX bytes:5597166323 (5.5 GB)

参考整理自:

http://blog.chinaunix.net/uid-26234482-id-3675262.html

https://www.jianshu.com/p/d6c8b7aac221

如有侵权, 请联系删除: lowmanisbusy@163.com

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值