防止期望在 EOF 上退出

prevent expect from exiting on EOF

我有一个使用 openconnect 连接到 vpn 的 expect 脚本。该脚本运行完美,除了我不知道如何在提供密码并且期望达到 EOF 后让 openconnect 保持活动状态。我想我需要分叉这个过程,但我需要它以某种方式保留密码。这是我的脚本

#!/usr/bin/expect -f

spawn ./openconnect
expect "sudo"
send "sudo_password\r"
expect "password:"
send "vpn_password\r"
expect /Connected\stun1\sas/ #expect connected tun1 as some ip

和开放连接

#!/usr/bin/env bash

sudo -k
sudo -S openconnect --juniper --user username --csd-wrapper ~/juniper-vpn-py/tnc vpn_server

输出像预期的那样以某个 ip 连接到 tun1,但随后 expect 关闭,进程也随之产生。

您必须等待生成的进程完成才能退出 Expect 脚本,否则生成的进程可能会过早终止。像这样尝试:

expect "Connected tun1 as"
expect -timeout -1 eof     ; # change the timeout value as needed

expect "Connected tun1 as"
interact