基础命令学习目录首页

原文链接:https://www.cnblogs.com/kevingrace/p/6378719.html

pssh提供OpenSSH和相关工具的并行版本。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。pssh用于批量ssh操作大批量机器;pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的;比起for循环的做法,更推荐使用pssh! (注意需要安装 python 2.4 或以上版本)
各版本下载地址: https://clsn.io/files/pssh/
百度下载地址:https://pan.baidu.com/s/1co3Hwoc0yI4LAKvXoXPzfg (提取密码: d2jy)

[root@bastion-IDC ~]# wget https://clsn.io/files/pssh/pssh-2.3.1.tar.gz
[root@bastion-IDC ~]# tar zxf pssh-2.3.1.tar.gz
[root@bastion-IDC ~]# cd pssh-2.3.1
[root@bastion-IDC pssh-2.3.1]# python setup.py install

-l        远程机器的用户名
-p       一次最大允许多少连接
-o       输出内容重定向到一个文件
-e       执行错误重定向到一个文件
-t        设置命令执行的超时时间
-A      提示输入密码并且把密码传递给ssh(注意这个参数添加后只是提示作用,随便输入或者不输入直接回车都可以)
-O      设置ssh参数的具体配置,参照ssh_config配置文件
-x      传递多个SSH 命令,多个命令用空格分开,用引号括起来
-X     同-x 但是一次只能传递一个命令
-i      显示标准输出和标准错误在每台host执行完毕后
-I      读取每个输入命令,并传递给ssh进程 允许命令脚本传送到标准输入

//列表文件内的信息格式是“ip:端口”,如果本机和远程机器使用的ssh端口一致,则可以省去端口,直接用ip就行。不过建议还是将端口都带上为好。
192.168.1.101:22
192.168.1.109:22
192.168.1.118:25791
192.168.1.105:25791
如上四台机器放在一个列表文件hosts.txt内,本机已经和这四台机器做了ssh无密码登陆的信任关系
注意:列表文件内的机器必须提前和本机做好ssh信任关系,如果没有做的话,那么pssh批量执行时,轮到这台没有做信任关系的机器时就不会执行。

a)批量执行命令
[root@bastion-IDC ~]# pssh -h hosts.txt -l root -i 'uptime'
[1] 16:05:48 [SUCCESS] 192.168.1.105
03:03:25 up 79 days, 13:44, 0 users, load average: 0.04, 0.01, 0.00
[2] 16:05:48 [SUCCESS] 192.168.1.118
03:03:32 up 75 days, 15:27, 4 users, load average: 0.96, 0.74, 0.45
Stderr: Address 192.168.1.118 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[3] 16:05:48 [SUCCESS] 192.168.1.109
03:03:25 up 61 days, 21:56, 2 users, load average: 0.02, 0.06, 0.18
Stderr: Address 192.168.1.102 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[4] 16:05:48 [SUCCESS] 192.168.1.101
16:03:17 up 35 days, 23:45, 1 user, load average: 0.03, 0.04, 0.01
Stderr: Address 192.168.1.101 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

如果添加-A参数,那么即使提前做了ssh信任关系,还是会提示输入密码!
[root@bastion-IDC ~]# pssh -h hosts.txt -l root -i -A 'uptime'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:                          //注意这个参数添加后只是提示作用,可以在此随便输入或者不输入直接回车都可以
[1] 16:08:25 [SUCCESS] 192.168.1.105
03:06:03 up 79 days, 13:46, 0 users, load average: 0.00, 0.00, 0.00
[2] 16:08:25 [SUCCESS] 192.168.1.109
03:06:03 up 61 days, 21:59, 2 users, load average: 0.00, 0.04, 0.15
Stderr: Address 192.168.1.102 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[3] 16:08:25 [SUCCESS] 192.168.1.101
16:05:54 up 35 days, 23:47, 1 user, load average: 0.00, 0.02, 0.00
Stderr: Address 192.168.1.101 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[4] 16:08:25 [SUCCESS] 192.168.1.118
03:06:10 up 75 days, 15:29, 4 users, load average: 0.85, 0.78, 0.51
Stderr: Address 192.168.1.118 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

[root@bastion-IDC ~]# pssh -h hosts.txt -l root -i -t 10 -o /root/pssh.log 'uptime && date'
[1] 17:01:02 [SUCCESS] 192.168.1.109
03:58:33 up 79 days, 5:58, 1 user, load average: 0.00, 0.00, 0.00
Wed Feb 8 03:58:33 EST 2017
[2] 17:01:02 [SUCCESS] 192.168.1.105
03:58:40 up 79 days, 14:39, 1 user, load average: 0.00, 0.00, 0.00
Wed Feb 8 03:58:40 EST 2017
[3] 17:01:02 [SUCCESS] 192.168.1.101
16:58:31 up 36 days, 40 min, 1 user, load average: 0.10, 0.03, 0.01
Wed Feb 8 16:58:31 CST 2017
Stderr: Address 192.168.1.101 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[4] 17:01:02 [SUCCESS] 192.168.1.118
03:58:47 up 75 days, 16:22, 3 users, load average: 0.20, 0.21, 0.31
Wed Feb 8 03:58:47 EST 2017
Stderr: Address 192.168.1.118 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
[root@bastion-IDC ~]# ll /root/pssh.log/
total 16
-rw-r--r--. 1 root root 100 Feb 8 17:01 192.168.1.101
-rw-r--r--. 1 root root 99 Feb 8 17:01 192.168.1.105
-rw-r--r--. 1 root root 99 Feb 8 17:01 192.168.1.109
-rw-r--r--. 1 root root 100 Feb 8 17:01 192.168.1.118

b)批量上传文件或目录(prsync命令)
同步本机/mnt/test目录下的文件或目录到远程机器的/mnt/test路径下
[root@bastion-IDC ~]# prsync -l root -h hosts.txt -r /mnt/test/ /mnt/test/
[1] 16:46:41 [SUCCESS] 192.168.1.109
[2] 16:46:41 [SUCCESS] 192.168.1.105
[3] 16:46:41 [SUCCESS] 192.168.1.118
[4] 16:46:41 [SUCCESS] 192.168.1.101

同步本机/mnt/test目录下的文件或目录到远程机器的/mnt路径下
[root@bastion-IDC ~]# prsync -l root -h hosts.txt -r /mnt/test/ /mnt/
[1] 16:47:40 [SUCCESS] 192.168.1.109
[2] 16:47:40 [SUCCESS] 192.168.1.105
[3] 16:47:45 [SUCCESS] 192.168.1.101
[4] 16:47:46 [SUCCESS] 192.168.1.118

注意:
上面批量同步目录操作是将本机对应目录数据同步到远程机器上,远程机器上对于目录下多余的文件也会保留(不会删除多余文件)

同理,批量同步文件操作,去掉-r参数,
注意:同步文件的时候,其实就是完全覆盖,远程机器对应文件内的文件会被全部替换!
如下:
同步本机的/mnt/test/file文件内容到远程服务器/mnt/test/file文件内
[root@bastion-IDC ~]# prsync -l root -h hosts.txt /mnt/test/file /mnt/test/file
[1] 16:53:54 [SUCCESS] 192.168.1.109
[2] 16:53:54 [SUCCESS] 192.168.1.105
[3] 16:53:54 [SUCCESS] 192.168.1.101
[4] 16:53:54 [SUCCESS] 192.168.1.118
[root@bastion-IDC ~]# prsync -l root -h hosts.txt /mnt/test/file /mnt/aaa
[1] 16:54:03 [SUCCESS] 192.168.1.109
[2] 16:54:03 [SUCCESS] 192.168.1.105
[3] 16:54:03 [SUCCESS] 192.168.1.101
[4] 16:54:04 [SUCCESS] 192.168.1.118

e)批量kill远程机器上的进程(pnuke命令)
比如批量kill掉远程机器上的nginx进程
[root@bastion-IDC ~]# pnuke -h hosts.txt -l root nginx
[1] 17:09:14 [SUCCESS] 192.168.1.109
[2] 17:09:14 [SUCCESS] 192.168.1.105
[3] 17:09:15 [SUCCESS] 192.168.1.118
[4] 17:09:15 [SUCCESS] 192.168.1.101

***************当你发现自己的才华撑不起野心时,就请安静下来学习吧***************
 
 
安装说明
因为最近在搭建ovirt虚拟化管理平台,在创建vm后,需要对vm进行压力测试,所以需要通过pssh来进行并发对多台vm执行stress进行压力测试。
安装pssh之前,将多台vm之间设置为ssh免密码访问
#ssh-keygen#ssh-copy-ip root@10.10.200.36#ssh-copy-ip root@10.10.200.37#ssh-copy-ip root@10.10.200.38#ssh-copy-ip root@10.10.200.39#ssh-copy-ip root@10.10.200.40#ssh-copy-ip root@10.10.200.41#ssh-copy-ip root@10.10.200.42
安装pssh
#yum install pssh
安装完成后,测试下pssh的效果,通过执行uptime命令来检测效果
创建list文件,在list文件中写入所需进行并发的主机ip
10.10.200.3610.10.200.3710.10.200.3810.10.200.3910.10.200.4010.10.200.4110.10.200.42
而后执行pssh命令
[root@37_centos6 files]# pssh -i -h list 'uptime'[1] 02:21:45 [SUCCESS] 10.10.200.39 14:21:44 up 22 min,  1 user,  load average: 0.00, 0.00, 0.00[2] 02:21:45 [SUCCESS] 10.10.200.42 02:21:45 up 22 min,  1 user,  load average: 0.00, 0.00, 0.00[3] 02:21:45 [SUCCESS] 10.10.200.41 02:21:45 up 22 min,  1 user,  load average: 0.00, 0.02, 0.00[4] 02:21:45 [SUCCESS] 10.10.200.40 02:21:44 up 22 min,  1 user,  load average: 0.00, 0.00, 0.00[5] 02:21:45 [SUCCESS] 10.10.200.37 02:21:45 up  5:09,  1 user,  load average: 0.07, 0.04, 0.00[6] 02:21:45 [SUCCESS] 10.10.200.38 02:21:44 up 22 min,  0 users,  load average: 0.05, 0.04, 0.01[7] 02:21:45 [SUCCESS] 10.10.200.36 14:21:45 up 43 min,  0 users,  load average: 0.00, 0.00, 0.00
上述uptime执行没有问题,现在来通过pssh对各台vm并发执行stress命令,对vm进行压力测试
[root@37_centos6 files]# pssh -i -h list 'stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2h'          
查看各台主机的进程中,查看stress是否进行
[root@39_centos6 ~]# ps -ef | grep stressroot      2310     1  0 14:22 ?        00:00:00 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2317  2310 94 14:22 ?        00:50:56 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2318  2310 28 14:22 ?        00:15:28 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2319  2310 90 14:22 ?        00:49:13 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2320  2310 31 14:22 ?        00:17:01 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2321  2310 85 14:22 ?        00:46:07 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2322  2310 30 14:22 ?        00:16:20 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2323  2310 28 14:22 ?        00:15:36 stress --cpu 1 --io 4 --vm 2 --vm-bytes 128M --timeout 2hroot      2437  2162  0 15:16 pts/0    00:00:00 grep stress
通过以上操作,就完成了pssh对个vm并发执行stress进行压力测试。
---------------------
作者:bobpen
来源:CSDN
原文:https://blog.csdn.net/bobpen/article/details/52638489
版权声明:本文为博主原创文章,转载请附上博文链接!
 
 
原文链接:https://my.oschina.net/xiaoxiezi/blog/1491630

1.先生成本机(master)密钥对

ssh-keygen -t rsa -C ''

直接按三次回车, 这条命令是生成无密码的密钥对,你也可以在‘’里面加邮箱。

生成的密钥对在 ~/.ssh/ 目录下面  id_rsa  和id_rsa.pub.

2.将id_rsa.pub私钥放入需要被无密码登陆的主机。

在master主机中使用命令查看,复制查询结果:

cat ~/.ssh/id_rsa.pub

3.粘贴到client主机

vim  ~/.ssh/authorized_keys

4.在client主机中开启ssh免密码登陆

vim /etc/ssh/sshd_config中

RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

5.在master主机上执行。

ssh-copy-id  -i ~/.ssh/id_rsa.pub "-p  22   root@192.168.6.102"   ~/.ssh/authorized_keys

需要输入一次client主机密码

6.下载pssh并安装(master)

#wget https://pypi.python.org/packages/source/p/pssh/pssh-2.3.1.tar.gz

#tar -zxvf pssh-2.3.1.tar.gz

#cd pssh-2.3.1

#python setup.py install

7.在master主机建立ip库

格式:ip:端口(22端口可以省略)

#vim  iplist_config

按上面格式存储

8.执行命令

pssh  -P -h iplist_config  -i 'ls  -a'

展示root目录下的文件,替换为你需要的命令。

9.向多个ip批量复制文件

比如:将本地 /etc/sysconfig/network文件,发送到远程主机的/tmp/network 位置。

pscp -h test.txt /etc/sysconfig/network /tmp/network

9.END.

 
 

pssh命令详解的更多相关文章

  1. pssh系列命令详解

    安装 pssh提供OpenSSH和相关工具的并行版本.包括pssh,pscp,prsync,pnuke和pslurp.该项目包括psshlib,可以在自定义应用程序中使用.pssh是python写的可 ...

  2. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  3. linux yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

  4. Linux下ps命令详解 Linux下ps命令的详细使用方法

    http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...

  5. Docker命令详解

    Docker命令详解   最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...

  6. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  7. android adb 命令详解

    ADB (Android Debug Bridge)  是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...

  8. Git 常用命令详解

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...

  9. Top 命令详解

    Top 命令详解 先感受一下top命令的执行结果吧!哈哈-- top - 17:32:34 up 3 days, 8:04, 5 users, load average: 0.09, 0.12, 0. ...

随机推荐

  1. c++——对象的动态建立和释放(new 和delete)

    3.8 对象的动态建立和释放 1 new和delete基本语法 1)在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除.在C语言中是利用库函数malloc和free来 ...

  2. RHEL 7.6 安装 Oracle 18c RAC

    RHEL 7.6 安装 Oracle 18c RAC 第一部分 安装规划 虚拟环境 VirtualBox 6.0 OS 版本 Red Hat Enterprise Linux Server relea ...

  3. HTML5知识点汇总(1)

    HTML5 1.html5是什么 万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改.-------h5并不是一门新的语言,而是html语言的第五次修订. 2.h ...

  4. 定心丸!ZipperDown漏洞分析与修复建议

    本文由  网易云发布. 近日,盘古实验室对外披露了ZipperDown漏洞,该漏洞是盘古团队针对不同客户的iOS应用安全审计的过程中发现的,大约有10%的iOS应用会受到此漏洞的影响. 利用此漏洞可以 ...

  5. 嵌入式C语言自我修养 03:宏构造利器:语句表达式

    3.1 基础复习:表达式.语句和代码块 表达式 表达式和语句是 C 语言中的基础概念.什么是表达式呢?表达式就是由一系列操作符和操作数构成的式子.操作符可以是 C 语言标准规定的各种算术运算符.逻辑运 ...

  6. 用EXCEL的VBA将PHPCMS的备份文件转换成HTML的一次尝试

    背景 有个PHPCMS的网站停了,但是网站的历史文章又想要看看,网站停了以后,管理员发来了网站的所有数据. 分析 因为不会PHP,所有本地环境跑网站不优先考虑. 有MySQL数据库文件,但是不熟悉My ...

  7. ASP 读写文件FSO,adodb.stream

    例如静态化页面的时候 总结:用server.CreateObject("adodb.stream") 来读写比较好,可避免乱码和读取到多余的字符.....不推荐 "scr ...

  8. 20155236范晨歌 Exp2后门原理与实践

    ## 实验二 后门原理与实践 1.Windows获得Linux Shell 在windows下,打开CMD,使用ipconfig指令查看本机IP ncat.exe -l -p 5236监听本机的523 ...

  9. 查内存命令之free

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackgao@gmail. ...

  10. STM32通用定时器配置

    一.STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生.其它6个 ...