zoukankan      html  css  js  c++  java
  • except 配合 shell实现公钥分发脚本

    新建 alvin 用户,设置登录密码为:123456
    切换到 alvin 下面,创建dsa 密钥
    以上实现方法省略


    # 使用expect 编写交互式登录
    [root@backup ~]# yum install expect -y

    [root@backup ~]# which expect
    /usr/bin/expect
    ------------------------------------------
    [root@backup scripts]# cat fenfa_sshkey.exp

    #!/usr/bin/expect
    if { $argc != 2 } {
    send_user "usage: expect fenfa_sshkey.exp file host
    "
    exit
    }
    
    #define var
    set file [lindex $argv 0]
    set host [lindex $argv 1]
    set password "123456"
    
    #spawn scp /etc/hosts root@10.89.7.10:/etc/hosts
    #spawn scp /-P52113 $file tornado@$host:$dir
    #spawn ssh-copy-id -i $fiel "-p 52113 tornado@$host"
    
    spawn ssh-copy-id -i $file "-p 22 alvin@$host"
    expect {
    "yes/no" {send "yes
    ";exp_continue}
    "*password" {send "$password
    "}
    }
    expect eof
    
    #script usage
    #expect fenfa_sshkey.exp file host dir
    #example
    #./fenfa_sshkey.exp /etc/hosts 10.89.7.10 /etc/hosts
    

      -------------------------------------------------------

    [root@backup scripts]# cat fenfa_sshkey.sh

    #! /bin/sh
    . /etc/init.d/functions
    #for ip in `cat iplist`
    for ip in 10 11 12
    do
    #expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub $ip >/dev/null
    expect fenfa_sshkey.exp ~/.ssh/id_dsa.pub 10.89.7.$ip
    
    if [ $? -eq 0 ];then
    action "$ip" /bin/true
    else
    action "$ip" /bin/false
    fi
    done
    

      

    [root@backup scripts]#
    ---------------------------------------
    分发机上执行:
    [alvin@backup scripts]$ sh fenfa_sshkey.sh
    spawn ssh-copy-id -i /home/alvin/.ssh/id_dsa.pub -p 22 alvin@10.89.7.10
    alvin@10.89.7.10's password:
    Now try logging into the machine, with "ssh '-p 22 alvin@10.89.7.10'", and check in:

    .ssh/authorized_keys

    to make sure we haven't added extra keys that you weren't expecting.

    10 [ OK ]
    spawn ssh-copy-id -i /home/alvin/.ssh/id_dsa.pub -p 22 alvin@10.89.7.11
    ssh: connect to host 10.89.7.11 port 22: No route to host
    expect: spawn id exp4 not open
    while executing
    "expect eof"
    (file "fenfa_sshkey.exp" line 21)
    11 [FAILED]
    spawn ssh-copy-id -i /home/alvin/.ssh/id_dsa.pub -p 22 alvin@10.89.7.12
    alvin@10.89.7.12's password:
    Now try logging into the machine, with "ssh '-p 22 alvin@10.89.7.12'", and check in:

    .ssh/authorized_keys

    to make sure we haven't added extra keys that you weren't expecting.

    12 [ OK ]
    [alvin@backup scripts]$ ssh -p22 10.89.7.12 uptime
    15:30:21 up 1 day, 6:21, 1 user, load average: 0.00, 0.00, 0.00
    [alvin@backup scripts]$ ssh -p22 10.89.7.10 uptime
    15:30:30 up 1 day, 6:21, 1 user, load average: 0.00, 0.00, 0.00
    [alvin@backup scripts]$

    #验证

    [alvin@linux-node2 ~]$ echo IP="`ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'`"
    IP=10.89.7.10

    [alvin@linux-node2 ~]$ ll .ssh/
    total 4
    -rw------- 1 alvin alvin 602 Sep 15 15:48 authorized_keys

  • 相关阅读:
    hdu 1599 find the mincost route (最小环与floyd算法)
    hdu 3371(prim算法)
    hdu 1598 find the most comfortable road (并查集+枚举)
    hdu 1879 继续畅通工程 (并查集+最小生成树)
    hdu 1272 小希的迷宫(并查集+最小生成树+队列)
    UVA 156 Ananagrams ---map
    POJ 3597 Polygon Division (DP)
    poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化
    poj 3734 Blocks 快速幂+费马小定理+组合数学
    CodeForces 407B Long Path (DP)
  • 原文地址:https://www.cnblogs.com/ahtornado/p/9651295.html
Copyright © 2011-2022 走看看