使用expect命令打通所有集群机器

    做分布式系统时候,集群的部署,环境的配备是个麻烦的事情,打通集群算是其中比较基本的事情,也是十分重要的,相对于一台一台机器打通,如果使用脚本一次性打通集群内的所有机器,将会是十分美妙的事情。

    打通集群的关键是两个问题,1、ssh加密的理解2、expect的使用。  关于这两方面的知识我在此不做解释,可以参见 O'Reilly的相关书籍学习。今天分享一下我的关于集群打通的脚本。

    前提:1、安装expect ,可以使用yum install expect   2、在下面脚本中首先要制定machine文件,表示集群中的所有机器名或IP,一行一个

    下面是machine文件  

    192.168.0.5
    192.168.0.6

    下面是exp.sh,用于打通所有集群

     

#!/bin/bash

declare PASSWORD
declare USER

function exp {
expect -c "
set timeout 10
spawn $1
expect {
(yes/no)? {
send yes\r
exp_continue
} *assword: {
send $PASSWORD\r
exp_continue
} eof {
exit
}
}
"
}


function create_newkey {
rm -rf /home/$USER/.ssh
expect -c "
set timeout 10
spawn ssh-keygen -t rsa
expect {
id_rsa) {
send \r
exp_continue
} passphrase) {
send \r
exp_continue
} again: {
send \r
interact

}
}
"
touch /home/$USER/.ssh/authorized_keys
chmod 600 /home/$USER/.ssh/authorized_keys
cat /home/$USER/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
}


function transfer {
while read IP
do
exp "scp -r /home/$USER/.ssh $IP:~/"
done<machine
}

function get_pass {
read -p "Enter the user:" USER
stty -echo
read -p "Enter the password:" PASSWORD
printf "\n"
read -p "Enter again:" PASSWORD1
stty echo
printf "\n"
if [ "$PASSWORD" != "$PASSWORD1" ];then
echo "password inconsistent"
exit 1
else
create_newkey
transfer
ssh-add /home/$USER/.ssh/id_rsa
fi
}

get_pass

转载于:https://www.cnblogs.com/sidmeng/archive/2012/03/09/2386070.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值