使用expect命令实现远程管理集群和一键安装Hadoop集群
2014-02-07 11:36
633 查看
expect命令通过预测远程终端将要显示的提示字符串,自动输入密码或其他用户指定的字符串,实现自动化安装。有关expect命令的使用方法请见:
shell脚本学习之expect命令 http://blog.csdn.net/leexide/article/details/17485451
使用expect实现shell自动交互 http://blog.csdn.net/leexide/article/details/17485451
有关实现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安装脚本到集群的每台机器中去,其他步骤也大致如此。
shell脚本学习之expect命令 http://blog.csdn.net/leexide/article/details/17485451
使用expect实现shell自动交互 http://blog.csdn.net/leexide/article/details/17485451
有关实现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安装脚本到集群的每台机器中去,其他步骤也大致如此。
相关文章推荐
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (7)
- Hadoop-Linux集群批量部署管理工具parallel-ssh(PSSH)的安装与使用
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (4)
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (6)
- linux下使用expect+scp+shell实现分布式集群系统安装,升级,部署
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (5)
- ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (1)
- 整理docker及Hadoop脚本(三)-实现一键式命令行远程安装docker集群
- 我的Hadoop安装——使用Cloudera部署,管理Hadoop集群(离线安装CDH5.7.0)
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (2)
- 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (3)
- 使用IPMI工具实现对服务器的远程管理(1)
- 使用hadoop中的RPC框架实现远程调用
- AD域环境下利用Supercrypt实现普通用户安装/运行/更新使用管理权限的方法
- Hadoop集群中Hbase的介绍、安装、使用
- 使用rmi协议,基于cglib实现组件管理和远程方法调用
- Hadoop集群中sqoop的安装使用
- 使用docker容器创建Kafka集群管理、状态保存是通过zookeeper实现,所以先要搭建zookeeper集群
- Kafka集群管理工具kafka-manager的安装使用