在shell里面嵌套expect命令语句

2020-05-07   204 次阅读


1.在/bin/bash脚本内使用expect命令格式如下

示例:
#!/bin/bash
expect <<!      #在bash脚本中嵌套 expect 命令以 <<! 开始
此处为expect命   #中间为需要执行的 expect 命令
!               #在bash脚本中嵌套 expect 命令以 ! 结束

2.一个简单的脚本嵌套expect例子

#!/bin/bash
d1=$(date "+%Y-%m-%d")
/bin/expect <<!      #expect命令的执行路径
set timeout 30       #等待30秒
spawn bash -c "/bin/scp /home/postgres-backup/${d1}_* root@10.1.0.42:/home/ > /dev/zero" 
                    ⬆#此处为expect执行的命令
expect "password:"   #监测spawn返回的信息里面是否包含'password:'
send "123456\r"      #如果上一条里面包含'password:'那么输入123456,\r 是换行
#expect eof          #执行完 spawn 命令后返回当前控制台。
#interact            #执行完 spawn 命令后留在对方控制台,比如ssh情景,需要留在ssh的机器上面
!                    #expect命令执行完,以 ! 结束

3.注意事项

如果 expect 命令里面包含 通配符,例如上面的例子里面的 * ,这时需要在 spawn 后面加上 bash -c 参数即可,反之亦然。


脑无理想 枉活一世