目录

pssh简介

pssh参数列表

使用实例


pssh简介

文档地址:

https://parallel-ssh.readthedocs.io/en/latest/

python异步并行SSH客户端库。

在许多服务器上异步运行SSH命令,而在客户端主机上的系统负载却最小,可以运行数十万。

高性能的基于本机代码的客户端-基于libssh2 C库。

假设现在需要对数百台服务器节点进行配置更新或者执行一些简短command,而目前并没有完备的部署工具软件, 那可以选择向pssh这样的并行登录远程终端并执行指定命令的shell工具。
以前机器节点少的时候,直接用shell写个for循环来执行命令,也没什么问题。当节点数量多了之后,一个shell命令可能要消耗几秒, 这时才能感受到pssh这种并行方式的好处,省时省力。

安装:yum -y install pssh

pssh参数列表

除了pssh,当需要传递登录密码时,可以用到sshpass命令:

pintai@MG:~/bak$ pssh --help
Usage: pssh [OPTIONS] command [...]Options:--version             show program's version number and exit--help                show this help message and exit-h HOST_FILE, --hosts=HOST_FILEhosts file (each line "[user@]host[:port]")-H HOST_STRING, --host=HOST_STRINGadditional host entries ("[user@]host[:port]")-l USER, --user=USER  username (OPTIONAL)-p PAR, --par=PAR     max number of parallel threads (OPTIONAL)-o OUTDIR, --outdir=OUTDIRoutput directory for stdout files (OPTIONAL)-e ERRDIR, --errdir=ERRDIRoutput directory for stderr files (OPTIONAL)-t TIMEOUT, --timeout=TIMEOUTtimeout (secs) (0 = no timeout) per host (OPTIONAL)-O OPTION, --option=OPTIONSSH option (OPTIONAL)-v, --verbose         turn on warning and diagnostic messages (OPTIONAL)-A, --askpass         Ask for a password (OPTIONAL)-x ARGS, --extra-args=ARGSExtra command-line arguments, with processing forspaces, quotes, and backslashes-X ARG, --extra-arg=ARGExtra command-line argument-i, --inline          inline aggregated output and error for each server--inline-stdout       inline standard output for each server-I, --send-input      read from standard input and send as input to ssh-P, --print           print output as we get itExample: pssh -h hosts.txt -l irb2 -o /tmp/foo uptimepintai@MG:~/bak$ sshpass --help
sshpass: invalid option -- '-'
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters-f filename   Take password to use from file-d number     Use number as file descriptor for getting password-p password   Provide password as argument (security unwise)-e            Password is passed as env-var "SSHPASS"With no parameters - password will be taken from stdin-h            Show help (this screen)-V            Print version information
At most one of -f, -d, -p or -e should be used

在线直译

pintai @ MG:〜/ bak $ pssh-帮助
用法:pssh [OPTIONS]命令[...]选项:--version显示程序的版本号并退出--help显示此帮助消息并退出-h HOST_FILE,--hosts = HOST_FILE主机文件(每行“ [user @] host [:port]”)-H HOST_STRING,--host = HOST_STRING其他主机条目(“ [user @] host [:port]”)-l USER,-user = USER用户名(可选)-p PAR,--par = PAR并行线程的最大数量(可选)-o OUTDIR,--outdir = OUTDIR标准输出文件的输出目录(可选)-e ERRDIR,--errdir = ERRDIRstderr文件的输出目录(可选)-t超时,--timeout =超时每个主机的超时(秒)(0 =无超时)(可选)-O OPTION,--option = OPTIONSSH选项(可选)-v,--verbose打开警告和诊断消息(可选)-A,-askpass要求输入密码(可选)-x ARGS,--extra-args = ARGS额外的命令行参数,处理空格,引号和反斜杠-X ARG,--extra-arg = ARG额外的命令行参数-i,--inline每个服务器的内联内联聚合输出和错误--inline-stdout每个服务器的内联标准输出-I,--send-input从标准输入读取并作为输入发送到ssh-P,--print打印输出示例:pssh -h hosts.txt -l irb2 -o / tmp / foo正常运行时间pintai @ MG:〜/ bak $ sshpass-帮助
sshpass:无效选项-'-'
用法:sshpass [-f | -d | -p | -e] [-hV]命令参数-f filename从文件中获取密码以使用-d number使用number作为获取密码的文件描述符-p password提供密码作为参数(不安全)-e密码作为env-var“ SSHPASS”传递没有参数-密码将从stdin获取-h显示帮助(此屏幕)-V打印版本信息
最多应使用-f,-d,-p或-e之一

使用实例

1.使用sshpass传递登录密码

先把需要远程登录的host集中写到一个文件, 比如叫hostlist,写入host列表:

192.168.1.11:22
192.168.1.12:22
192.168.1.13:22

然后将ssh登录密码写到另一个文件, 比如叫remotepass, 写入密码:

yourpassword

最后执行相关命令, 直接打印每个节点的输出内容:

sshpass -f remotepass pssh -h hostlist -l yourloginname -A -i "hostname"

输出结果如下

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
[1] 11:23:21 [SUCCESS] 192.168.1.11:22
test1.hostname
[2] 11:23:21 [SUCCESS] 192.168.1.12:22
test2.hostname
[3] 11:23:21 [SUCCESS] 192.168.1.13:22
test3.hostname

2.将结果输出到指定文件

如果需要将输出结果收集起来,那么可以通过-o选项来指定结果输出目录,比如:

sshpass -f remotepass pssh -h hostlist -l yourloginname -o outputdir -A "hostname"

执行时终端输出:

Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
[1] 11:23:21 [SUCCESS] 192.168.1.11:22
[2] 11:23:21 [SUCCESS] 192.168.1.12:22
[3] 11:23:21 [SUCCESS] 192.168.1.13:22

而当前目录会生成outputdir目录,目录中每个host占一个文件,如:

pintai@MG:~/bak$ ls output/
192.168.1.11:22 192.168.1.12:22 192.168.1.13:22
pintai@MG:~/bak$ cat output/*
test1.hostname
test2.hostname
test3.hostname

3. 执行sudo命令

有些shell命令可能需要通过sudo权限来执行,一般来说本地可以这么执行

echo your_sudo_pass | sudo -S your_command

而在pssh中可以这么做:

sshpass -f remotepass pssh -h hostlist -l yourloginname -o outputdir -A "echo your_sudo_pass | sudo -S netstat -antup | grep xxx"

执行完毕后,具体输出结果可以在outputdir目录下查找。

4. 使用private key拷贝本地文件到多个远程终端

pscp -x "-i /locadir/id_rsa" -l yourname -h nodes.txt /tmp/local.txt /remote/dir/

linux pssh parallel-ssh 批量执行远程shell命令相关推荐

  1. linux jenkins远程脚本,在Jenkins中配置执行远程shell命令(转)

    用过Jenkins的都知道,在Build配置那里有1个Add buld step,有这样两个选项: 1. Execute Windows batch command 2. Execute shell ...

  2. ubuntu 下非交互式执行远程shell命令

    apt-get install sshpass sshpass -p **your_password** ssh -o StrictHostKeyChecking=no "root@$ip& ...

  3. java 读取ssh2协议得到的数据_Java通过SSH2协议执行远程Shell脚本

    Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) ganymed-ssh2简介: Ganymed SSH-2 for Java是用纯Java实现SS ...

  4. pssh Oracle,服务器批量执行工具 PSSH

    操作一台服务器的时候可以 ssh,操作多台服务器可以开多个窗口多个 ssh,那操作很多台服务器呢? 我们的一个 Oracle Gird Engine 集群上大概有60多台 Ubuntu 服务器作执行节 ...

  5. linux c ide ssh,VSCode配置远程SSH-IDE

    ●Preface 服务器很多时候都是部署在Linux远程机器上的,我们通常是SSH连过去然后用vim或者emacs去修改源文件. 这种方式对我来说很麻烦,因为我已经习惯了全宇宙最好用的C++IDE V ...

  6. linux rsh用法,Linux中rsh远程shell命令的使用技巧解析

    rsh有两种使用模式: rsh $host : 远程登录,启动交互式进程. rsh $host $command :远程执行命令,并显示输出. rsh hosthostcommand rsh $hos ...

  7. android远程shell命令行,Android ADB使用之详细篇(五)执行Shell命令

    执行Shell命令 Adb提供了shell来在模拟器或手机上运行各种各样的命令,这些命令的二进制形式存在于这个路径中: /system/bin/...    无论是否进入adb远程shell,都可以使 ...

  8. Linux终端如何批量执行多条命令?

    首先,建立后缀格式为.sh的文件,比如我要批量执行清除进程残留的共享内存.队列以及信号的命令.权且命名文件为clear.sh,文件如下: 其次,文件中写入如下命令,注意不要忘记分号,分号可以保证前面命 ...

  9. 【linux】利用ssh、sshpass和rsync命令,实现免密同步文件,指定非22端口

    文章目录 rsync安装 sshpass安装 rsync常用参数说明 sshpass命令 免密登录,默认22端口 # sshpass -p password rsync -avz user@ip:/d ...

最新文章

  1. springboot怎么写上传头像接口?
  2. 《花田半亩》有感——午夜静静地震撼着我的生命(不是技术,发在首页,只是因为感动)...
  3. python索引序列_Pythonfor循环通过序列索引迭代过程解析
  4. Python操作excel文件创建workbook和批量创建Sheet
  5. 有关uploadifive的使用经验(转:http://www.cnblogs.com/itBscs/p/4781786.html )
  6. 4.3 欠拟合与过拟合
  7. linux服务器不会中毒,[转载]ubuntu 不会中毒的原因(转)
  8. 计算机网络管理员demo,计算机网络试题demo
  9. 阿里技术:基于Kafka+Flink+Redis的电商大屏实时计算案例
  10. 计算机课实验报告收获体会,计算机实验报告总结.doc
  11. java 死锁_java死锁分析
  12. kafka学习笔记一
  13. vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
  14. 微信小程序特殊效果合集第一期
  15. ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们
  16. 投资百万运营网站 为何只坚持了一年?
  17. C++中的var类型
  18. python学习--模型过拟合查看learning curve
  19. A - Rooms and Passages Gym - 102215A
  20. 同为科技(TOWE)8路RS485通讯智能机柜PDU时序电源管理器

热门文章

  1. JS中NaN、NULL、undefined、详解
  2. 5G 信令流程 — 5GC 的业务请求(Service Request)
  3. 架构师之路 — 数据库设计 — 关系型数据库的外键约束与关联
  4. extern “C”的作用详解
  5. 互联网协议第六版部署提速 阿里专家详解全套安全解决方案
  6. Windows Mobile 与 PC之间的通过蓝牙(Bluetooth) 传输文件的开发
  7. Unidesk, Citrix 桌面虚拟化方案之新神器
  8. eclipse中编辑properties文件无法看到中文
  9. 系统调优一之内存子系统
  10. oracle修改机器名后不能启动Console的解决方案