Chinaunix首页 | 论坛 | 博客
  • 博客访问: 380535
  • 博文数量: 89
  • 博客积分: 3176
  • 博客等级: 中校
  • 技术积分: 1205
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-15 10:08
文章分类

全部博文(89)

文章存档

2011年(17)

2010年(19)

2009年(35)

2008年(18)

分类:

2010-09-21 09:51:59

#############################################
#
# Expect 拷贝ssh公钥到远端机器,实现无key登录
#
#
#   2010.04.46   V 1.1
#   by hu
#
#############################################

1. 一个主机列表 "host.list", 以行记录登录主机IP PWD

2. 一个被调用的expect脚本"key.exp",用来实现非人工方式的拷贝公钥

3. 一个主shell脚本"ssh.sh",用来实现轮询IP,去执行调用expect脚本

##############
#
#  host.list
#
##############

192.168.14.220        123abc
192.168.14.221        456def

##############
#
#   ssh.sh
#
##############

#!/bin/bash

for i in $(cat /root/host.list|cut -f1);do
        /root/key.exp $i $(cat /root/host.list|cut -f2)
done

##############
#
#   key.exp
#
##############

log_file /root/exp.log

# set env
set host [lindex $argv 0]
set name root
set password [lindex $argv 1]

# copy id_rsa.pub to remote
spawn scp /root/.ssh/id_rsa.pub $name@$host:/root/tmp
expect {
        "(yes/no)?" { send "yes\n"; exp_continue }
        "password:" { send "$password\n" }
}
expect "100%"
send "exit\n"

# ssh to doing
spawn ssh $name@$host
expect {
        "(yes/no)?" { send "yes\n"; exp_continue }
       "password:" { send "$password\n" }
}
expect "#"
send "mkdir /root/.ssh\n"
expect "#"
send "cat /root/tmp >> /root/.ssh/authorized_keys\n"
expect "#"
send "exit\n"
阅读(1068) | 评论(1) | 转发(0) |
0

上一篇:shell 读书笔记

下一篇:wget 使用手记

给主人留下些什么吧!~~

chinaunix网友2010-09-21 16:20:40

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com