shell编辑之Expect免交互

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 root@$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 root@$hostname
expect {
        "(yes/no)"
        {send "yes\r";exp_continue}
        "*password"
        {send "$password\r"}
}
expect "*]#"
send "exit\r"
expect eof
EOF
发布了44 篇原创文章 · 获赞 10 · 访问量 1019

猜你喜欢

转载自blog.csdn.net/weixin_45725244/article/details/103389984