一.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