欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于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在主机数量不多的时候使用非常方便,更多功能,日后遇到时,再更新