pssh批量管理服务器
pssh是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh。
- parallel-ssh: https://code.google.com/p/parallel-ssh/
安装
- 编译安装
wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz tar zxvf pssh-2.3.1.tar.gz cd pssh-2.3.1/ python setup.py install
- yum安装
yum -y install epel-release yum -y install pssh
- cygwin下安装
apt-cyg install python-setuptools easy_install pip pip install pssh
使用pssh
简要范例
-
pssh 在多个主机上并行地运行命令。
-
pssh -h hosts.txt -l irb2 -o /tmp/foo uptime
-
-
pscp 传输文件到多个主机,类似scp。
-
pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt
-
-
pslurp 从多个主机拷贝到本地。
-
Example: pslurp -h hosts.txt -L /tmp/outdir -l irb2 /home/irb2/foo.txt foo.txt
-
-
pnuke 在多个主机并行地杀进程。
-
pnuke -h hosts.txt -l irb2 java
-
-
prsync 使用rsync协议从本地同步到远程主机。
-
prsync -r -h hosts.txt -l irb2 foo /home/irb2/foo
-
-
避免ssh检查host keys:
pssh -i -H host1 -H host2 \ -x "-O StrictHostKeyChecking=no -O UserKnownHostsFile=/dev/null -O GlobalKnownHostsFile=/dev/null" \ echo hi
-
也可以加到.ssh/config
cat >>~/.ssh/config <<EOF StrictHostKeyChecking=no UserKnownHostsFile=/dev/null GlobalKnownHostsFile=/dev/null EOF
-
也可以加到.ssh/config
-
host文件格式
# 可以有空行,#开头的是注释行 # 每行一个主机,格式: [user@]host[:port] 192.168.1.4 root@192.168.1.5 root@192.168.1.7:2203
pssh --help
Usage: pssh [OPTIONS] command [...]
Options:
--version show programs version number and exit
--help show this help message and exit
-h HOST_FILE, --hosts=HOST_FILE
hosts file (each line "[user@]host[:port]")
#如果指定了多个host文件(多次使用-h选择),pssh将它们连接在一起使用;
#如果同一主机出现多次,pssh将会多次连接。
-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
Example: pssh -h hosts.txt -l irb2 -o /tmp/foo uptime