如上所述:使用interact会保持在终端而不会退回到原终端,
比如切换到root用户,会一直在root用户状态下;
比如ssh到另一服务器,会一直在目标服务器终端下,而不会切回的原服务器。
举例:
//test.sh
#!/usr/bin/expect spawn su root expect ":" send "root\r" send "ls\r" interactps: 因为ubuntu中密码后的冒号是中文冒号,注意expect ":" 中也要是中文冒号。
如上可以看到,使用interact 会一直保持在目标终端,此时必须手动输入其他命令。即interact后的命令不起作用,比如interact后添加exit ,并不会退出root用户------>interact的作用就是要将把控制权交给控制台
因为expect脚本默认的是等待10s,当执行完ls命令后,停留在root@ubuntu:/home/python/Desktop/Test/day22#10s后,自动切回了原用户。(10s内再输入其他命令也不会在root终端执行)
expect eof 和interact 二者可以根据情况选一个作为结尾,一般我们使用 expect eof 。
expect eof 表示交互结束,退回到原用户;
interact 会停留在目标用户。