expect脚本批量执行交互操作

该脚本展示了如何通过expect批量执行SSH连接到多台主机,并进行交互操作,如添加用户、设置密码和下载文件。脚本首先读取hosts_in.txt文件中的IP和密码,然后利用expect进行SSH连接,自动化执行命令,包括修改SSH配置、创建用户、设置密码和下载安装脚本。
摘要由CSDN通过智能技术生成

expect脚本批量执行交互操作

#!/bin/bash
#ssh 连接慢的解决方法
#/etc/ssh/sshd_config   修改 UseDNS为no ,UsePAM yes,重启sshd服务
function print_red(){
        echo -e "\e[1;31m  $* \e[0m"
        }
function print_green(){
        echo -e "\e[1;32m  $* \e[0m"
        }
function print_yellow(){
        echo -e "\e[1;33m  $* \e[0m"
        }
function print_blue(){
        echo -e "\e[1;34m  $* \e[0m"
        }
function print_red2(){
        echo -e "\e[1;35m  $* \e[0m"
        }
function print_cyan(){
        echo -e "\e[1;36m  $* \e[0m"
        }
function print_white(){
        echo -e "\e[1;37m  $* \e[0m"
        }

#需要在脚本同目录放一个 hosts_in.txt文件  里面格式 “IP|password”,一行一个记录
for host in `cat hosts_in.txt`
do
        ip=`echo $host|awk -F "|" '{print $1}'`
        pw=`echo $host|awk -F "|" '{print $2}'`
        print_yellow "=============================================================> $ip|$pw"
expect <<EOF  
    set timeout -1
    spawn ssh root@$ip 
    expect { 
        "yes/no" { send "yes\r";exp_continue } 
        "*password:*" { send "$pw\r" }
    } 
    expect "]#" { send "useradd agent\n" } 
    expect "]#" { send "echo 'agent'|passwd agent --stdin\r" } 
    expect "]#" { send "cd /home/agent;curl  http://x.x.x.x/file/install.sh -o ./install.sh\r"}
    expect "]#" { send "exit\r"}
    expect eof 
EOF
done
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值