轻量级自动化工具 pssh
pssh应用场景
pssh是一个用python编写的可以并发在多台服务器上批量执行命令的工具,它支持文件并行复制,远程并行执行命令,其中文件并行复制是pssh的核心功能,也是同类工具中的一个亮点。
要使用pssh工具,其前提是要保证本地主机和要管理的主机之间的单向信任,也就是说要在本地主机和远程所有服务器进行秘钥认证。
pssh安装与使用
pssh要求python的版本大于2.4即可,可以使用yum安装pssh
[root@yufu ~]# yum install pssh -y
pssh用法:
-h 执行命令的远程主机列表文件;文件格式:[user@]host[:port],或只写ip地址,其他省略。每行一条记录
-H user@ip:port 文件内容格式[user@]host[:port]
-l 远程机器的用户名
-p 指定pssh最大并行线程数,例如: pssh -p 10
-e 执行错误重定向到一个文件
-t 设置命令执行的超时时间
-A 提示输入密码并且把密码传递给ssh(注意这个参数添加后只是提示作用,随便输入或者不输入直接回车都可以)
-O 设置ssh参数的具体配置,参照ssh_config配置文件
-x 传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X 同-x 但是一次只能传递一个命令
-i 显示标准输出和标准错误在每台host执行完毕后
-I 读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入
应用实例
本机:192.168.214.187
管理主机:
[root@yufu opt]# cat ip.txt
192.168.214.128
192.168.214.134
192.168.214.136
#列表文件内的信息格式是“ip”格式,没有使用[user@]host[:port],
如果本机和远程机器使用的ssh端口一致,则可以省去端口,直接用ip就行。不过建议还是将端口都带上为好。
注意事项
列表文件内的机器必须提前和本机做好ssh信任关系,如果没有做的话,那么pssh批量执行时,轮到这台没有做信任关系的机器时就不会执行。
对上面的管理机器推送秘钥文件
这里使用自动推送的脚本来进行秘钥的分发,这个方式适合向多台服务器推送秘钥时使用,省去了远程复制时的确认操作,从而实现自动分发秘钥,脚本如下:
#!/bin/bash
path=/root/.ssh
[ -d ${keypath} ] || mkdir -p ${keypath}
rpm -q expect &> /dev/null || yum install expect -y
ssh-keygen -t rsa -f /root/.ssh/id_rsa -P ""
password=123456
while read ip;do
expect <<EOF
set timeout 5
spawn ssh-copy-id $ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
done < /opt/ip.txt
执行脚本
[root@yufu script]# ./autokey.sh
#随机挑一台主机测试
[root@yufu script]# ssh 192.168.214.134 'hostname'
localhost.localdomain
[root@yufu script]#
利用pssh查看所有远程主机时间是否同步: -i :将远程执行的命令结果输出到当前屏幕
[root@yufu opt]# pssh -h /opt/ip.txt -i "date"
[1] 05:52:32 [SUCCESS] 192.168.214.134
2018年 05月 19日 星期六 17:10:22 CST
[2] 05:52:32 [SUCCESS] 192.168.214.128
2018年 05月 19日 星期六 17:10:32 CST
[3] 05:52:34 [SUCCESS] 192.168.214.136
2018年 05月 19日 星期六 08:17:12 CST
备份远程主机的/etc目录到/opt ;由于/etc目录文件很多,如果单线程执行备份可能很慢,这时可以使用 -p 选项指定并行线程数量
[root@yufu opt]# pssh -h /opt/ip.txt -l root -p 10 -i "cp -ar /etc /opt/"
[1] 06:02:38 [SUCCESS] 192.168.214.128
[2] 06:02:38 [SUCCESS] 192.168.214.134
[3] 06:02:38 [SUCCESS] 192.168.214.136
关闭远程主机selinux
[root@yufu opt]# pssh -h /opt/ip.txt -l root -p 10 -i "sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config"
[1] 06:11:26 [SUCCESS] 192.168.214.128
[2] 06:11:27 [SUCCESS] 192.168.214.136
[3] 06:11:27 [SUCCESS] 192.168.214.134
pscp和psurp批量复制文件
pscp命令主要作用是将本地文件并行地复制到远程多台主机上,而psurp是把远程主机上的文件复制到本机上来,这两个命令作用刚好相反pscp相当于是pssh的子命令,使用时要以 pscp.pssh 执行,pslurp可以直接执行
应用示列:将本机上的/opt/num.sh复制到远程各主机上的/opt/yufu/目录下
批量创建相同目录
[root@yufu opt]# pssh -h /opt/ip.txt -l root -i "mkdir -p /opt/yufu"
[1] 07:59:00 [SUCCESS] 192.168.214.128
[2] 07:59:02 [SUCCESS] 192.168.214.136
[3] 07:59:10 [SUCCESS] 192.168.214.134
复制文件
[root@yufu opt]# pscp.pssh -h /opt/ip.txt -l root -p 3 /opt/num.sh /opt/yufu/
[1] 08:02:32 [SUCCESS] 192.168.214.128
[2] 08:02:32 [SUCCESS] 192.168.214.136
[3] 08:02:34 [SUCCESS] 192.168.214.134
随机查看一台复制情况
[root@yufu opt]# ssh 192.168.214.136 "ls /opt/yufu/"
num.sh
复制目录: -r : 递归
root@yufu opt]# pscp.pssh -h /opt/ip.txt -l root -p 10 -r ./app/ /opt/yufu
[1] 08:13:18 [SUCCESS] 192.168.214.134
[2] 08:13:18 [SUCCESS] 192.168.214.136
[3] 08:13:20 [SUCCESS] 192.168.214.128
pslurp:将远程主机文件或目录复制到本机
使用pslurp复制远程主机文件到本地需要指定本地的存放路径,需要用到 : -L 参数,复制目录加:-r 参数
-L :指令本地路径,从远程主机复制文件保存到的本地路径
使用方式:(本地路径在前,远程复制路径在后,文件新名称在最后必须要定义)
pslurp -h/-H -L 本地路径 远程路径 文件目录重命名
应用示列
将远程主机的message日志复制到本地/opt/log下,从远程复制文件或目录到本地来必须重命名,否则执行会出错。
[root@yufu opt]# pslurp -h /opt/ip.txt -l root -L /opt/log/ /var/log/messages messages
[1] 08:42:00 [SUCCESS] 192.168.214.128
[2] 08:42:00 [SUCCESS] 192.168.214.134
[3] 08:42:00 [SUCCESS] 192.168.214.136
复制到本地不用担心文件何重名问题,因为它会对应每台主机创建一个目录,把各自的文件放在各自的目录中,避免同名冲突
[root@yufu log]# ls
192.168.214.128 192.168.214.134 192.168.214.136
[root@yufu log]# cd 192.168.214.134/
[root@yufu 192.168.214.134]# ls
messages
同样,从远程主机复制目录也一样,加上 -r 选项进行递归即可,-r选项与-L 选项顺序不能颠倒,
[root@yufu opt]# pslurp -h /opt/ip.txt -r -L /opt/home/ /home/ home
[1] 08:47:44 [SUCCESS] 192.168.214.134
[2] 08:47:44 [SUCCESS] 192.168.214.128
[3] 08:47:44 [SUCCESS] 192.168.214.136
思路:
通过pssh的批量操作功能结合pscp.pssh指令,可以实现日常的文件分发,脚本批量执行的工作,这样结合起来工作,基本能够实现简单工作的自动化
轻量级自动化工具 pssh的更多相关文章
- 轻量级自动化运维工具Fabric的安装与实践
一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...
- 轻量级批量管理工具pssh
pssh工具 pssh工具是个轻量级的批量管理工具,相比同类型的开源工具 Ansible,Saltstack,他比较轻量级,需要对管理的主机做秘钥认证 Ansible是可以做秘钥认证,也可以通过配置文 ...
- 自动化运维工具——pssh
PSSH介绍 pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的.它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持 ...
- C#最佳工具集合:IDE、分析、自动化工具等
C#是企业中广泛使用的编程语言,特别是那些依赖微软的程序语言.如果您使用C#构建应用程序,则最有可能使用Visual Studio,并且已经寻找了一些扩展来对您的开发进行管理.但是,这个工具列表可能会 ...
- 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
[摘要] node脚本实现轻量级自动化部署 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 需求描述 前端工程出包后实现简易的自动化部署. 二. ...
- web自动化工具-开篇
web自动化工具-开篇 最近几年,前端技术风一样的速度迭代更新,各种框架工具雨后春笋般涌现,作为一个平凡的开发者,也只能在洪流中沉沉浮浮,微不足道,以前前端叫做切图仔.美工,如今改了称号叫前端工程师, ...
- web自动化工具-liveStyle
web自动化工具-liveStyle LiveStyle. The first bi-directional real-time edit tool for CSS, LESS and SCSS主要用 ...
- web自动化工具-livereload
web自动化工具-livereload livereload是一个很神奇的工具,主要解放了F5键,监听文件变动,整个页面自动刷新.可搭载gulp等构建工具使用.和liveStyle 针对样式文件相比, ...
- web自动化工具-Browsersync
web自动化工具-Browsersync browser-sync才是神器中的神器,和livereload一样支持监听所有文件.可是和livereload简单粗暴的F5刷新相比,browsersync ...
随机推荐
- 【LDAP】LDAP介绍
原文:http://ldapman.org/articles/intro_to_ldap.html原文作者:Michael Donnelly 什么是LDAP? LDAP的英文全称是Lightweigh ...
- 解决dede图集上传图片时跳出302错误
错误.以前从来没遇到过,想了半天也没想出是哪里出了错误,郁闷~ 没辙,去论坛搜了一下,还真有同命相连的兄弟,同样爆出这个错误.往下拉了几楼,还是找到了答案. 解决办法是: 在include/userl ...
- C# params 动态参数
public delegate void Action(params object[] args); 再简单的东西都要强迫自己记录了,前段时间硬盘坏了,资料全没了,也没有备份,太痛苦了,那么多资料全没 ...
- xml解析demo使用
package lianxi; import java.io.FileOutputStream;import java.io.OutputStreamWriter; import javax.xml. ...
- [精校版]The Swift Programming Language--语言指南--字符串和字符 (转)
今天装了10.10.马上就可以实际编写swift了.还是很兴奋啊. 哈哈.字符串和字符是大家最容易打交道的.今天就转一下讲解swift中字符串和字符的文章.希望对大家有帮助. 原文地址:http:// ...
- 计算Sn
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字. 例如:2+22+222+2222+22222(n=5), 输入 输入两个数.第一个为a ,第二个为n(表示有多少个数相加 ...
- 浅谈移动优先的跨终端Web 解决方案
1.基准 我们定义测试基准和开发基准,也就是说我们定义我们在哪些浏览器上去进行调试. 左侧图主要是定义PC上的基准,其中A级项目中必须支持,B级可选,C级观察. 2.检测 主要是终端检测 这是一张架构 ...
- win10 mstsc 远程,登录失败,账号限制
问题: win7操作系统在局域网共享文件时,有时会遇到“登录失败:用户账户限制.可能的原因包括不允许空密码,登录时间限制,或强制的策略限制.”的情况,这要怎么解决呢 解决步骤: 1.按WIN+R,调出 ...
- django orm 多对多自定义第三张表
# -*- coding: utf-8 -*-# Generated by Django 1.11.11 on 2018-09-02 08:07from __future__ import unico ...
- 域名指向新的服务器IP后不能访问的解决办法
不能访问是因为本地DNS缓存,缓存清除方法:dos命令窗口输入ipconfig/flushdns ,回车即可.