欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell编辑之Expect免交互

程序员文章站 2022-07-10 11:18:38
...

shell编辑之Expect免交互

expect:是建立在tcl基础上的一个工具,expect是用来进行自动化控制和检测的工具
send :向进程发送字符串,用于模拟用户的输出命令
spawn:启动进程并跟踪后续交互信息
interact:执行完成后保持交互状态,把控制权交给控制台
timeout:指定超时时间,过期则继续执行后续命令单位是:秒 timeout-1为永不超时默认情况下timeout为十秒
exp_continue:允许expect继续向下执行
send_user:会显命令 相当于echo
$argv参数数组:expect可以接受从bash传递的参数可以使用[lindex $argv n]获得n-0开始分别表示第一个数、第二个数、第三个数。。。。。

直接执行

#!/usr/bin/expect
set timeout 60   #//超时时间
#//参数传入
set hostname [lindex $argv 0]
set password [lindex $argv 1]
#//追踪命令
spawn ssh [email protected]$hostname
#//不做信息并开始匹配。执行免交互
expect {
        "(yes/no)"
        {send "yes\r";exp_continue}
          "*password"
        {send "$password\r"}
}
interact

嵌入执行

#!/bin/bash
hostname=$1
password=$2
   /usr/bin/expect <<-EOF
spawn ssh [email protected]$hostname
expect {
        "(yes/no)"
        {send "yes\r";exp_continue}
        "*password"
        {send "$password\r"}
}
expect "*]#"
send "exit\r"
expect eof
EOF