首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用expect命令实现远程管理集群和一键安装Hadoop集群

使用expect命令实现远程管理集群和一键安装Hadoop集群

作者头像
星哥玩云
发布2022-06-29 20:12:58
发布2022-06-29 20:12:58
5700
举报
文章被收录于专栏:开源部署开源部署

expect命令通过预测远程终端将要显示的提示字符串,自动输入密码或其他用户指定的字符串,实现自动化安装。有关expect命令的使用方法请见:

shell脚本学习之expect命令  http://www.linuxidc.com/Linux/2014-02/96262.htm

有关实现Hadoop集群一键安装的步骤,首先写好需要分发到集群每台机器上运行的脚本,然后保证你的管理结点已安装tcl、expect、JDK、Hadoop安装包、hosts文件、profile文件、authorized_keys。

集群的机器列表写到一个文件中,其中要包括IP地址、域名、root用户密码、Hadoop管理账户名、Hadoop管理账户密码。

将需要运行的shell脚本scp到需要安装Hadoop的机器上,过程中需要使用expect。之后再使用ssh执行远程机器上的shell脚本。所有的expect语句都写在一个exp文件中,通过给每个命令set一个type来区分执行的是哪个命令。

安装配置Hadoop集群的步骤这里就不细讲,主要说一下如何使用expect命令实现自动化安装。例如在集群的每台机器上新建一个用户,你可以这么做:

在管理结点上有脚本run.sh

#!/bin/bash host_ip=192.168.71.202 pwd_root=iflytek pwd_jcsong=iflytek echo "Start create user jcosng..." expect ./login.exp $host_ip root $pwd_root jcsong $pwd_jcsong

脚本login.exp

#!/usr/bin/expect -f set timeout 300 set ip_addr [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set newuser [lindex $argv 3] set newpwd [lindex $argv 4] spawn ssh "$user@$ip_addr" bash "/home/adduser.sh $newuser" expect "Enter new UNIX password:" send  "$newpwd\r" sleep 1 expect "Retype new UNIX password:" send  "$newpwd\r" sleep 1 for {set i 0} {$i<5} {incr i} {         expect ":"         send "\r"         sleep 1 }

puts "\r" send "\r" expect "n]" send  "Y\r"

为了演示的方便,这里的所有参数大部分都是直接写到脚本里的,其实这些参数应该从一个集群列表中读取。在安装之前首先要scp安装脚本到集群的每台机器中去,其他步骤也大致如此。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档