集群下命令的统一执行

来源:互联网 发布:wp8软件 快手 编辑:程序博客网 时间:2024/05/18 01:14

为了管理集群,常常需要在整个集群下执行同样的命令,但是分别到不同机器上去一个一个的执行效率太低,所以就需要找到一种方式简化整个过程。话不多说,直接给出方法:

一、使用ssh免密码登陆执行

关于ssh的配置,本文不提,只是配置时注意权限的问题。这个步骤需要在每台机器上面分别配置好,保证机群上的机器都可以免密码互连。要执行命令,登陆其中任何一台机器,以下面方式执行:


CMD="/sbin/ifconfig"user=testTO=machinenamemachine_start=1machine_end=10for((i=$machine_start;i<=$machine_end;i++)) do        echo "====================== $TO-$i ============================"        ssh $user@$TO-$i $CMDdone


其中cmd如果有参数,使用双引号引住。

二、使用sshpass用明文密码登陆执行

这种方式会在命令中直接写入明文密码,关于安全性自己拿捏,在必要时也可以使用。如果没有安装sshpass,需要先下载安装,过程略去。

执行方式如下:

CMD="/sbin/ifconfig"user=rootTO=machinenamemachine_start=1machine_end=10for((i=$machine_start;i<=$machine_end;i++)) do         echo "====================== $TO-$i ============================"        sshpass -p password ssh -o StrictHostKeyChecking=no $user@$TO-$i $CMDdone




注意:

1. 集群中的机器时按照machinename-NO的格式命名的,其中NO表示数字号码,从1开始依次递增。

2. -o StrictHostKeyChecking=no表示在连接的时候假设对方机器上的known_hosts中没有当前机器,那么不用提示直接执行命令,经过测试,只有设置为no时才通过,设为yes则不予执行,设为ask也不提示。不过这样操作安全性很低。详细参见:http://blog.csdn.net/pointfish/article/details/7025932

3.这些都是需要机器中的网络配置畅通才能使用的,对于初始搭建集群时并不适用,配置网络只好一个一个的来了(若高人有办法可告知)

原创粉丝点击