• 批量配置主机--expect


    ##安装expect
    
    yum -y install expect

    ###step1: 发送脚本文件到远程服务器;

    ###step2: 在远程服务器执行脚本;完成后删除脚本文件

    #!/bin/bash
    
    IpList=`cat $1`
    
    for ip in $IpList
    do
    echo -e "33[32m 'send script to $ip' 33[0m"
    /usr/bin/expect <<-EOF
    set timeout -1
    set passwdlist { username {password1 password2 password3 ...} }
    foreach {u p} $passwdlist {
    spawn  scp script.sh $u@$ip:/opt/
    lassign $p s(1) s(2) s(3)
    set i 1
    expect {
    "*yes/no*"  {send "yes
    ";exp_continue}
    "*assword:*" {send "$s($i)
    ";incr i;set okpasswd [expr {$i - 1}]; exp_continue}
    "*]*" { puts "scp completed"; exit}
    "Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)." {puts "ipaddr:$ip password:unkonw"; exit }
    }
    }
    EOF
    done
    
    for ip in $IpList
    do
    echo -e "33[32m 'execute script on $ip' 33[0m"
    /usr/bin/expect <<-EOF
    set timeout -1
    set passwdlist { username {password1 password2...} }
    foreach {u p} $passwdlist {
    spawn ssh $u@$ip
    lassign $p s(1) s(2) s(3)
    set i 1
    expect {
    "*yes/no*" {send "yes
    ";exp_continue}
    "*password:*" {send "$s($i)
    ";incr i;set okpasswd [expr {$i - 1}] ;exp_continue}
    "*]*" {send "hostname
    "}
    "Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)." {puts "ipaddr:$ip password:unkonw"; exit }
    }
    expect "]*"
    send { /opt/script.sh } 
    send "
    "
    expect "]*"
    send { rm /opt/script.sh }
    send "
    "
    expect "]*"
    send "exit
    "
    }
    EOF
    done
    
  • 相关阅读:
    第一章-实例7-猴子吃桃问题
    第一章-实例6-判断是否为闰年
    第一章-实例3-计算变量所占字节数
    IDEA学习笔记
    spring boot学习概要(尚硅谷)
    JSP动态WEB开发技术--第一章
    学习前端的准备任务
    cmd优化
    软件测试基础概念
    软件工程理论
  • 原文地址:https://www.cnblogs.com/gy99/p/12175105.html
Copyright © 2020-2023  润新知