概述
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">搭Hadoop时候需要配置多节点ssh互信,节点数量多了,手工配起来就很麻烦。网上有很多自动配置ssh互信的脚本,但基本都不能直接用。今天摸索了下,自己写了个简易版,测试还能用,在这里分享下。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">1、每个节点安装expect包</span>
yum install expect -y
2、将auto_ssh.sh及ip.list 拷贝至每个节点需要建立ssh的用户下,我这里拷贝至hadoop的家目录
auto_ssh.sh为脚本代码,ip.list 存放所有节点的ip地址,包括自身ip。
auto_ssh.sh脚本内容:
#! /usr/bin/expect
spawn ssh-keygen
expect "id_rsa"
send "r"
expect "phrase"
send "r"
expect "again"
send "r"
interact
set f [open ip.list r]
while { [gets $f ip]>=0} {
spawn ssh-copy-id $ip
expect {
"*yes/no" {send "yesr";exp_continue}
"*password:" {send "passwordr";exp_continue}
}
}
close $f
ip.list 存放节点ip信息,每个ip一行;
192.168.56.101
192.168.56.102
192.168.56.103
.......
3、在脚本存放位置运行脚本即可,可直接expect调用;
expect auto_ssh.sh
若有问题,可根据报错信息予以调整。
此代码只适用于全新系统环境,即用户未生成过公钥,若已生成,则删除公钥即可;
其他功能如条件判断等可以自行添加。
最后
以上就是超级酒窝为你收集整理的expect脚本实现批量ssh互信的全部内容,希望文章能够帮你解决expect脚本实现批量ssh互信所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复