基于SSH-key验证的运维管理工具-PSSH
程序员文章站
2022-05-29 22:22:10
...
PSSH
基于ssh协议的key验证的工具PSSH(在key验证的基础上使用更加方便)
pssh适用于主机数不多的情况下,如果主机比较多还是使用专业的管理软件ansible,puppet,Saltstack
相关运维管理工具:
ansible介绍及使用参照链接文章:ansible
saltstack介绍及使用参照链接文章:saltstack
puppet介绍及使用参照链接文章:puppet
pssh安装:epel源
yum install pssh
PSSH语法
pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制
选项如下:
--version:查看版本
-h:主机文件列表,内容格式”[[email protected]]host[:port]”
-H:主机字符串,内容格式”[[email protected]]host[:port]”
-A:手动输入密码模式
-i:每个服务器内部处理信息输出
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-P:打印出服务器返回信息
-v:详细模式
使用示例:
1.如果没有基于key验证:需要使用-A,-H -I,选项,输入IP,用户名和密码
pssh -H 192.168.34.2 -A -i hostname
2.批量创建用户nginx,先将ip存放在文本中,iplist.txt,代替了脚本实现
pssh -h iplist.txt -i useradd nginx
3.将查到root用户信息保存到/data/pssh目录下,生成IP对应的文件列表
pssh -h iplist.txt -o /data/pssh -i getent passwd root
4.批量删除iplist.txt中的/data下数据
pssh -h iplist.txt -i 'rm -rf /data/*' 此处需要加单引号引起来,双引号都不行
5.批量显示iplist.txt主机名
pssh -h iplist.txt -i 'echo $HOSTNAME' 此处需要加单引号引起来,双引号都不行
6.批量显示iplist.txt下的selinux是否关闭了,如果没关闭,则发送命令批量关闭
显示:pssh -h iplist.txt -i '/etc/selinux/config'
关闭:pssh -h iplist.txt -i 'sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux'
7.批量安装软件
pssh -h iplist.txt -i 'yum install pssh -y'
8.批量解压keepalived软件
pssh -h iplist.txt -i 'tar -zxvf keepalived-1.2.19.tar.gz'
PSCP.PSSH命令:pssh的批量复制命令
PSCP语法:
pscp.pssh功能是将本地文件批量复制到远程主机
pscp [-vAr] [-h hosts_file] [-H [[email protected]]host[:port]] [-l user] [-p par] [-o
outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote
Pscp-pssh选项
-v 显示复制过程
-r 递归复制目录
pscp.pssh使用示例:
因为 pssh不支持把当前主机上的脚本,在iplist.txt中执行,所以需要先拷贝
1.把当前的test.sh批量复制到其他主机iplist.txt的/data目录下
pscp.pssh -h iplist.txt test.sh /data/
2.批量执行test.sh脚本
pssh -h iplist.txt -i '/data/test.sh'
3.把本地目录批量复制到多台主机iplist.txt的/data目录下
pscp.pssh -h iplist.txt -r /data/test/ /data/
PSLURP命令:把多台主机的文件全部拉取(复制)到当前主机上
pslurp功能是将远程主机的文件批量复制到本地
pslurp [-vAr] [-h hosts_file] [-H [[email protected]]host[:port]] [-l user] [-p par][-o
outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir]
remote local(本地名)
Pslurp选项
-L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
-r 递归复制目录
pslurp使用示例:
1.把多台主机的日志文件复制到当前主机并改名为log.bak
pslurp -h iplist.txt -L /data/var/ /var/log/messages log.bak
备注:把各个主机/var/log/messages日志,全部复制到/data/var/下并改名log.bak
可以查看/data/var/的树结构,是以IP名为目录下
[[email protected] data]#tree /data/var/
/data/var/
├── 192.168.34.101
│ └── log.bak
└── 192.168.34.105
└── log.bak
pnuke 并行在远程主机杀进程
1.批量杀死httpd进程
pnuke -h iplist.txt httpd
prsync 使用rsync协议从本地计算机同步到远程主机
1.将当前主机的/data/test目录同步到多台主机的/tmp目录下
prsync -h iplist.txt -l root -a -r /data/test /tmp/
PSSH在主机数量不多的时候使用非常方便,更多功能,日后遇到时,再更新
上一篇: 七牛api客户端示例
下一篇: golang 截取字符串