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