expect实现ssh无密钥登陆
2013-10-19 01:45
267 查看
一年多前就用过expect,当时写了个用expect实现ssh无密钥登陆的脚本,后来弄丢了。
今晚和同学一起装了个100个节点的集群,实在是恶心了,于是又温习了一遍。
先安装expect:
我用了两个脚本,一个bash脚本(send_key.sh),在其中调用另外一个expect脚本(scp_key_to_node.exp),两个脚本放在同一个目录下,脚本中的impala1/2/3...是主机名,可以先在/etc/hosts文件中配置好。
bash脚本:
expect脚本:
set可以设置超时,或者设置一个变量的值
spawn是执行一个命令
expect等待一个匹配的输出流中的内容
send是匹配到之后向输入流写入的内容
[lindex $argv 0]表示脚本的第0个参数
expect eof表示读取到文件结束符
在脚本所在的目录下执行:
今晚和同学一起装了个100个节点的集群,实在是恶心了,于是又温习了一遍。
先安装expect:
# yum install expect
我用了两个脚本,一个bash脚本(send_key.sh),在其中调用另外一个expect脚本(scp_key_to_node.exp),两个脚本放在同一个目录下,脚本中的impala1/2/3...是主机名,可以先在/etc/hosts文件中配置好。
bash脚本:
#!/bin/bash ssh-keygen -t dsa for (( i = 1; i <= 100 ; i ++ )) do ./scp_key_to_node.exp $i done
expect脚本:
#!/usr/bin/expect set timeout 5 set hostno [lindex $argv 0] spawn scp ~/.ssh/id_dsa.pub impala$hostno:~/.ssh/pub_key expect "*password*" send "111111\r" spawn ssh impala$hostno "cat ~/.ssh/pub_key/ >> ~/.ssh/authorized_keys" expect "*password*" send "111111\r" spawn ssh impala$hostno "chmod 600 ~/.ssh/authorized_keys" expect "*password*" send "111111\r" expect eof
set可以设置超时,或者设置一个变量的值
spawn是执行一个命令
expect等待一个匹配的输出流中的内容
send是匹配到之后向输入流写入的内容
[lindex $argv 0]表示脚本的第0个参数
expect eof表示读取到文件结束符
在脚本所在的目录下执行:
# ./send_key.sh
相关文章推荐
- HTML5和以前的区别
- 绩效考核系统开发心得之三__数据库操作
- struts2怎么返回一个字符串给jsp?(使用json)
- 韩顺平_JAVA_视频教程_下载(打开迅雷,直接复制链接地址即可下载)
- wordpress 强制登陆
- cookie 和 ses sion 的区别
- 重拾C,一天一点点_4_随想
- InputStream
- java基础--HashSet
- 无法创建普通文件"/mnt/floppy/loader.bin": 设备上没有空间
- 猜生日
- linux(本机)配置域名(多域名)
- sicily 1024 Magic Island
- kmp算法的理解与实现
- 递归和非递归实现汉诺塔问题
- 大学VISUAL C++程序设计案例 打字测试 有感
- 初识java——简单画图板的实现
- 工作和毕业前的区别
- 聪明人和傻子和奴才
- 面试官面试的时候在面试你什么 如何准备面试