expect脚本中使用expect eof 和使用interact的区别

interact执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。
expect eof与spawn对应,表示捕捉终端输出信息终止,结束交互。

1、 interact的使用

如上所述:使用interact会保持在终端而不会退回到原终端,

比如切换到root用户,会一直在root用户状态下;

比如ssh到另一服务器,会一直在目标服务器终端下,而不会切回的原服务器。

举例:

//test.sh

#!/usr/bin/expect
spawn su root
expect ":"
send "root\r"
send "ls\r"
interact 

ps: 因为ubuntu中密码后的冒号是中文冒号,注意expect ":" 中也要是中文冒号。 

 如上可以看到,使用interact 会一直保持在目标终端,此时必须手动输入其他命令。即interact后的命令不起作用,比如interact后添加exit ,并不会退出root用户------>interact的作用就是要将把控制权交给控制台

2、expect eof的使用

#!/usr/bin/expect
spawn su root
expect ":"
send "root\r"
send "ls\r"
expect eof

 因为expect脚本默认的是等待10s,当执行完ls命令后,停留在root@ubuntu:/home/python/Desktop/Test/day22#10s后,自动切回了原用户。(10s内再输入其他命令也不会在root终端执行)

3、总结:

expect eof 和interact 二者可以根据情况选一个作为结尾,一般我们使用 expect eof 。

expect eof 表示交互结束,退回到原用户;

interact 会停留在目标用户。

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值