我是靠谱客的博主 超级酒窝,最近开发中收集的这篇文章主要介绍expect脚本实现批量ssh互信,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<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互信所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部