一、pssh简介及安装
首先我们来了解下什么是pssh,它是干嘛用的?pssh是一个python编写可以在多台服务器上执行命令的工具,也可以实现文件复制。换而言之就是一个批量管理多台服务器的一个小工具。常常我们有这样的经历,就是需要在很多台主机上执行同一命令,在以前我们需要编写一个脚本,然后写一个循环,然后写上要执行的命令,感觉挺麻烦的,有了pssh这个工具,很多事情都不需要我们编写脚本去完成了,用pssh管理多台主机,就好像在自己主机上执行命令一样,我们不再编写脚本就可以实现管理多台主机。接下来我们来安装使用pssh吧
1、查看pssh包信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
说明:可以看到pssh这个包主要功能就是提供了各种基于ssh和scp的命令行工具,包里包含了pssh、pscp、pnuke、prsync、pslurp,这五个工具。这个包来源epel,所以在查看和安装之前请先配好自己的epel源。
2、安装pssh包
1 |
|
二、pssh工具的使用
pssh命令选项有如下:
--version:查看版本信息
1 2 3 |
|
-h:主机文件列表,内容格式"[user@]host[:port]"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
说明:以上命令的意思是在我iplist定义的主机上执行ls -l命令,这里要说一下,pssh默认是基于key认证连接远程主机,所以我在执行上面的命令没有输入口令。
-H:主机字符串,内容格式"[user@]host[:port]"。
1 2 3 |
|
说明:-H是指定某一台主机的选项,当然要指定多台主机,可以用-H一一指定,也可以用-H 指定很多主机,但是每个主机用空格隔开,且多个主机要用引号引起来。
-A:手动输入密码模式
1 2 3 4 5 6 |
|
说明:pssh默认是用ssh的key验证来执行命令,如果我们要管理没有做SSHkey验证的主机,那么我们可以用-A来指定手动输入密码模式,有关ssh基于key认证登录,请参考本人博客https://www.cnblogs.com/qiuhom-1874/p/11783371.html
-i:每个服务器内部处理信息输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
说明:在我们不指定选项-i,pssh默认只输出执行命令的成功与失败状态,并不会把执行的结果信息打印出来。使用-i我们可以把在每台主机上执行命令的结果和命令执行成功与否一并显示。上面有一个centos6的主机上没有装iproute包所以 默认没有ip这个命令,所以命令没有执行成功。
-l登录使用的用户名
1 2 3 4 5 6 7 8 9 10 |
|
说明:-l选项就是指定以那个用户执行命令,这个指定的用户是远程主机上的用户。通常-l(小写L) 与-A配合使用。
-o:输出的文件目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
说明:-o是指定把命令执行的结果输出到以主机命名的文件存放地。也就是说命令执行后的结果保存在以主机命名的一个文件里,-o就是指定一个目录存放这些文件的。
-t:TIMEOUT超时时间设置,0无限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
以上就是pssh工具的常用选项说明以及用法
三、pscp.pssh命令选项说明以及使用
pscp.pssh功能是将本地文件批量复制到远程主机
命令用法:
1 |
|
说明:pscp.pssh以上很多选项和pssh用法是一样的,比如-A -H -h -l等等
-v:显示复制过程
-r:递归复制目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
说明:可以看到我们把指定目录递归复制到目标主机上了,上面有一个主机失败了,原因是那个主机上是一个普通用户做的SSH key认证,我们用的是qiuhom这个普通用户的身份在远程主机上管理,因为qiuhom这个普通用户对/home/目录没有写权限,所以执行失败了。
示例:
将本地的单个文件复制到远程主机上
1 2 3 4 5 6 7 8 9 10 |
|
将本地多个文件复制到远程主机上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
将本地目录批量复制到远程主机上
1 2 3 4 5 6 7 8 9 10 |
|
四、pslurp命令的使用
pslurp命令的功能是将远程主机的文件批量复制到本地
命令用法:
1 |
|
说明:这个工具的用法和pscp.pssh的用法很类似,都是对文件的操作,pscp.pssh是往远程主机上推送,pslurp是从远程主机上拉去文件到本地。
-L:指定从远程主机下载到本机的储存的目录,local是下载到本地后的名称
-r:递归复制目录
示例:
批量下载目标服务器的passwd文件至/root下,并命名为user
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
说明:-L 是指定存放远程主机下载下来的文件存放地,每个主机的文件都会在其指定的本地目录下以远程主机ip为名的目录名下放着,文件名为我们指定的文件名。
将远程主机192.168.0.128 上的/etc/profile.d/目录下载到本地主机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
说明:若未指定文件存放在本地的名字,默认就是存放在当前目录下以远程主机ip为名的目录下,文件名为我们下载远程主机上的文件名。
五、pnuke命令的使用
pnuke命令的功能是能在多个主机上并行杀死进程的程序
命令用法:
1 |
|
说明:以上选项同pssh选项用法一致
示例:
杀死远程主机httpd进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
说明:可以看到我们过滤httpd监听的80端口命令执行状态失败,说明远程主机上没有进程监听在80端口上。
六、prsync 命令的使用
prsync命令的功能是将文件并行复制到多个主机
命令用法:
1 |
|
说明:以上选项同pssh命令选项类似。
示例:
复制文件到服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
说明:prsync的用法和pscp.pssh的用法类似,它两的区别在于,pscp.pssh不支持创建目录(在远端服务器上若没有指定目录,则创建),而prsync支持。pscp.pssh 支持将本地的不同多个文件同时复制到远程服务端,而prsync 不支持。
复制目录到服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
说明:传目录和pscp.pssh用法一样,需要加-r选项。
作者:Linux-1874
出处:https://www.cnblogs.com/qiuhom-1874/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
分类: Linux自动化运维工具