码迷,mamicode.com
首页 > 其他好文 > 详细

通过expect的自动交互实现ssh公钥批量下发

时间:2016-11-17 02:49:11      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:shell


1、auto_except_ssued_publickey.sh

#!/usr/bin/expect (这里要注意执行环境为:#!/usr/bin/expect )
#注意,如果没有expect,请先安装,yum -y install expect 或apt-get -y install expect
set timeout 10  
set username [lindex $argv 0] #传入第一个参数,用户名
set password [lindex $argv 1] #传入第二个参数,密码
set hostname [lindex $argv 2] #传入第三个参数 主机

spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $username@$hostname #这里为主要动作

expect {
            # irst connect, no public key in ~/.ssh/known_hosts
            "Are you sure you want to continue connecting (yes/no)?" { #捕获输出的提示,一般第一次ssh连接的时候回出现这个安全提示
            send "yes\r"    #实现自动交互,通过send自动输入yes并回车
            expect "password:" #捕获提示输入密码的字符串
            send "$password\r" #实现自动交互输入密码
            }
            #already has public key in ~/.ssh/known_hosts
            "password:" {
            send "$password\r" #实现自动交互输入密码
            }
            "Now try logging into the machine" {
                #it has authorized, do nothing!
            }
        }
expect eof

2、main_script_auto_issued_SSHpublickey.sh

#!/usr/bin/env bash

user="root"
passwd="1qaz#EDC"

for i in `seq 150 155`; do
ip="192.168.100.$i"
/root/auto_except_ssued_publickey.sh $user $passwd $ip    #调用下发ssh公钥的脚本,且传入三个对应的参数
done


3、其他说明

    在这之前,记得通过ssh-keygen生成ssh密钥对,生成后路径在/root/.ssh/

    公钥文件为:id_rsa.pub

  下发后,在对端机器的root/.ssh/路径下,会有一个anaconda-ks.cfg文件

本文出自 “FA&IT运维-Q群:223843163” 博客,请务必保留此出处http://freshair.blog.51cto.com/8272891/1873370

通过expect的自动交互实现ssh公钥批量下发

标签:shell

原文地址:http://freshair.blog.51cto.com/8272891/1873370

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!