zoukankan      html  css  js  c++  java
  • EXPECT交互式批量上传公钥

    EXPECT交互式批量上传公钥

    # vim key.sh
    #/bin/bash
    Public_Key() {
    [ ! -f /usr/bin/expect ] && yum install expect -y &>/dev/null  #判断expect是否安装,没有则安装expect(这个挺好用的)
    /usr/bin/expect <<EOF   #在控制节点机器上生成密钥对,一种是从未生成过,一种是原来生成过(注意本脚本选择不覆盖)
    set timeout 30
    spawn ssh-keygen
    expect "(/root/.ssh/id_rsa):"
    send "
    "
    expect  {
            "Overwrite" { send "n
    " }
            "Enter passphrase (empty for no passphrase):" {
                    send "
    "
                    expect "Enter same passphrase again:"
                    send "
    " }
    }
    expect eof
    EOF
    while read line;do #遍历循环/test/host_passwd.txt文件,批量上传公钥
    host=$(echo $line | awk '{print $1}')
    passwd=$(echo $line | awk '{print $2}')
    /usr/bin/expect <<EOF
    spawn ssh-copy-id $host
    expect {
            "yes/no" { send "yes
    "; exp_continue }
            "password:" { send "$passwd
    "}
    }
    expect eof
    EOF
    done < /test/host_passwd.txt  #主机ip及密码文件的绝对路径
    } Public_Key
    && echo "now you can ssh ip" || echo "Please check your host_passwd.txt"
    # cat /test/host_passwd.txt
    192.168.10.10    123456
    192.168.10.11    123456
    192.168.10.12    123456
    192.168.10.13    123456
    ...

    完成后删除 rm -rf /test/host_passwd.txt 即可

  • 相关阅读:
    成都磨子桥技工学校 / 数据结构 Challenge 4
    圆桌问题(网络流24题)
    试题库问题(网络流24题)
    [AHOI2005]航线规划
    [AMPPZ2014]The Prices
    方格取数(网络流24题)
    太空飞行计划问题(网络流24题)
    Linux 学习3
    Linux 学习2
    Linux 学习1
  • 原文地址:https://www.cnblogs.com/user-sunli/p/13889477.html
Copyright © 2011-2022 走看看