大规模终端控制

大规模终端控制

我在 docker 中运行了 1000 个 Ubuntu 16 容器,用于对我们正在测试的软件进行压力测试。

我可以一次 ssh 到每个盒子中……但我正在寻找一种自动化命令和控制这个内部僵尸网络的方法。有没有命令行镜像工具?比如输入命令sudo shutdown -r nowsudo service myService restart从所有 1000x 终端获取响应……即使它只是命令的返回代码?

到目前为止我已经研究过:

  • 期望脚本
  • 木偶 / 厨师
  • 写我自己的基于韦蒂

答案1

密码

PSSH 提供 OpenSSH 和相关工具的并行版本。其中包括 pssh、pscp、prsync、pnuke 和 pslurp。该项目包括可在自定义应用程序中使用的 psshlib。源代码是用 Python 编写的,可以从以下位置克隆:

git 克隆http://code.google.com/p/parallel-ssh/

PSSH 支持 Python 2.4 及更高版本(包括 Python 3.1 及更高版本)。它最初由 Brent N. Chun 编写和维护。由于日程繁忙,Brent 于 2009 年 10 月将维护工作移交给了 Andrew McNabb。

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_FILE
                        hosts file (each line "[user@]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[user@]host[:port]")
  -l USER, --user=USER  username (OPTIONAL)
  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)
  -o OUTDIR, --outdir=OUTDIR
                        output directory for stdout files (OPTIONAL)
  -e ERRDIR, --errdir=ERRDIR
                        output directory for stderr files (OPTIONAL)
  -t TIMEOUT, --timeout=TIMEOUT
                        timeout (secs) (0 = no timeout) per host (OPTIONAL)
  -O OPTION, --option=OPTION
                        SSH option (OPTIONAL)
  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)
  -A, --askpass         Ask for a password (OPTIONAL)
  -x ARGS, --extra-args=ARGS
                        Extra command-line arguments, with processing for
                        spaces, quotes, and backslashes
  -X ARG, --extra-arg=ARG
                        Extra 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 it

https://code.google.com/archive/p/parallel-ssh/

使用示例:

 pssh -i -h hosts.txt echo "hello, world"

相关内容