Linux操作多台主机脚本/工具

1,用脚本从信任主机下发命令到多台主机(不复制文件只执行命令的情况下):

首先需要指定一台主机作为信任主机,这样从这台主机登录其他机器就不需要密码了。

如何设置信任主机(以node1为例)?

ssh-keygen

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

for host in node{2,3,4,5,6};do echo $host; ssh-copy-id -i /root/.ssh/id_rsa root@$host;done

或者

使用自动化配置方法

 

在信任主机上执行上述命令,红色IP处填其他机器的IP地址,这样从信任主机登录该IP就不需要密码了。

一个含有其他机器IP地址的hostlist文本文件hostlist,放在信任主机上(和脚本放在同一目录)

比如你有4台机器IP地址分别为192.168.2.1~192.168.2.4

文本文件hostlist可以如下

192.168.2.1

192.168.2.2

192.168.2.3

192.168.2.4

脚本会按行去遍历hostlist

doCommand 脚本:

#!/bin/sh

doCommand()

{

hosts=`sed -n '/^[^#]/p' hostlist`

for host in $hosts

do

echo ""

echo HOST $host

ssh $host "$@"

done

return 0

}

if [ $# -lt 1 ]

then

echo "$0 cmd"

exit

fi

doCommand "$@"

echo "return from doCommand"

 

执行命令(记得先对doCommand.sh增加执行权限 chmod u+x doCommand.sh)

./doCommand.sh “ls -al /root/”

这样该脚本就会在每台机器上执行”ls -al /root/”这个命令,并返回结果在信任主机上。

 

2、使用pyhon工具pssh:

工具下载地址:http://www.theether.org/pssh/ 下载需要的版本tar或者rpm包(以 pssh-1.4.3.tar.gz 为例):

上传到指定目录下并解压,进入pssh-1.4.3/ 即可通过命令:

bin/pssh -h hostlist -l username -o 日志输出路径 执行命令

 

也可以先配置对应的环境变量;然后直接通过命令执行:

pssh -h hostlist -l username -o 日志输出路径 执行命令

 

bin下边的几个脚本作用说明:

pssh:在远程多台主机上并行运行命令

pscp :把文件并行复制到多台远程主机上

prsync:使用rsync协议本地文件同步到远程多台主机上。

pnuke:在远程多台主机上并行killall某一进程

pslurp:把文件从远程多台主机上覆制到本地主机上

 

参数:

--version:查看版本

--help:查看帮助,即此信息

-l --user username (OPTIONAL)

-h:主机文件列表,内容格式”[user@]host[:port]”

-H:主机字符串,内容格式”[user@]host[:port]”

-:登录使用的用户名

-p:并发的线程数【可选】

-o:输出的文件目录【可选】

-e:错误输入文件【可选】

-t:TIMEOUT 超时时间设置,0无限制【可选】

-O:SSH的选项

-v:详细模式

-A:手动输入密码模式

-x:额外的命令行参数使用空白符号,引号,反斜线处理

-X:额外的命令行参数,单个参数模式,同-x

-i:每个服务器内部处理信息输出

-P:打印出服务器返回信息

来自: http://man.linuxde.net/pssh

 

例子:

hostlis列表文件:

192.168.2.1

192.168.2.2

192.168.2.3

192.168.2.4

在每台主机 /tmp下创建文件夹test_dir:

pssh -h hostlist "mkdir /tmp/test_dir" (不加-l 默认当前登录用户)

 

复制当前目录下的command.sh 文件到每台主机的 /tmp/test_dir 目录下:

pscp -h hostlist -l root command.sh /tmp/test_dir/

 

删除每台主机刚刚创建的目录:

pssh -h hostlist -l carpo -o ./out "rm -rf /tmp/test_dir"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章