zoukankan      html  css  js  c++  java
  • 利用expect 工具批量分发公钥给SVR,实现自动分发

    expect是一个很好用的工具,他的亮点就是可以简化会话的交互式操作,实现自动分发公钥的功能,不要自己每一个都去输入密码或者IP了。这样大大节约了运维工作的效率。

    分发好的效果图。

     因为我们在第一次给我们的服务器分发公钥的时候,每一个都需要确认输入yes然后输入密码。这些工作本来是需要我们手动去输入的,这就是交互式会话。

    但是那么多服务器,几百几千台,我们每一个都去重复性的去输入吗?那太麻烦了。所有就有了expect可以自动输入。

    大概四个要领。

    第一步,安装软件,

    yum install expect -y

    直接yum就安装了,很方便。

    然后批量新建用户,本来批量新建用户,这里我们就直接在CRT里直接批量新建了。

    useradd oldgirl

    echo 123456|passwd --stdin oldgirl

    su - oldgirl

    第二步,我们要备份自己的公钥,然后把本机的私钥移走到另外的目录。因为私钥是不能给被人的,只要公钥才能给别人。然后把公钥备份一下,并把公钥copy一份命名为authorized_keys。

    只能命名为这个,这个就相当于是手动的运行ssh-copy-id  这个命令,懂的都懂。

    第三步,设置自动分发的exp的脚本,

    #! /usr/bin/expect
    #这里的意思是要输入3个参数,如果不输入三个参数就会输出一句话
    if { $argc !=3 } {
     send_user "usage: expect fenfauser-simple.exp file host dir
    "
     exit
    }
    #define var 定义了三个变量
    set file [lindex $argv 0]
    set host [lindex $argv 1]
    set dir  [lindex $argv 2]
    set password "123456"
    spawn scp -P22 -r -p $file oldgirl@$host:$dir
    #可能出现的对话框,然后send输入
    expect {
           "yes/no" {send "yes
    ";exp_continue}
           "*password" {send "$password
    "}
    }
    expect eof
    exit

    相信这么简单的代码,稍微有一点编程基础的都可以看懂吧!此脚本的名字

    fenfauser-simple.exp   

    顺便插入一个使用expect自动登入SSH的代码。也很简单。

    #! /usr/bin/expect
    set host "192.168.3.106"
    set passwd "123456"
    spawn ssh oldgirl@$host
    expect {
    "yes/no" { send "yes
    "; exp_continue}
    "password:" { send "$passwd
    " }
    }
    expect eof
    exit

    第四步编写shell脚本,

    #!/bin/sh
    . /etc/init.d/functions
    for ip in `cat iplist`
    do
      expect fenfauser-simple.exp /home/oldgirl/.ssh $ip /home/oldgirl >/dev/null 2>
    &1
      if [ $? -eq 0 ] ;then
          action "$ip" /bin/true
      else
          action "$ip" /bin/false
      fi
    done

    此脚本的名字fenfa-sshkey.sh   这个脚本也很简单,意思就是引入上面的exp脚本,然后输入三个变量, 本地的公钥位置,IP   ,远程目录的公钥位置。

    第五步,测试效果。

     

     把私钥copy过来,把公钥也改回来名字,单机测试了一下SSH可以连,不用密码。

    如果需要批量操作,就需要引用其他的脚本来实现了。例如批量取IP,批量分发hosts文件,批量安装软件等等。

  • 相关阅读:
    博客中引用的概念
    重构博客写作
    做中学之教与学工具箱
    做中学之效率工具箱
    两个月选一本理想教材
    《敏捷革命》读书笔记
    《Java2 实用教程(第五版)》学习指导
    得到.每天听本书
    「2017年教育部-永信至诚产学合作协同育人网络空间安全专业课程教学研讨会」参会总结
    Ditto在教学上的应用
  • 原文地址:https://www.cnblogs.com/davidz/p/14570497.html
Copyright © 2011-2022 走看看