基于SSH-key验证的运维管理工具-PSSH

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:主机文件列表,内容格式”[user@]host[:port]”
    -H:主机字符串,内容格式”[user@]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 [user@]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 [user@]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名为目录下
    [root@node7-1 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在主机数量不多的时候使用非常方便,更多功能,日后遇到时,再更新

猜你喜欢

转载自blog.csdn.net/weixin_33858485/article/details/87638852
今日推荐