防止expect在EOF时退出

ric*_*i90 3 bash fork expect

我有一个使用 openconnect 连接到 VPN 的期望脚本。该脚本运行良好,只是我不知道在提供密码并且预期已达到 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
Run Code Online (Sandbox Code Playgroud)

和开放连接

#!/usr/bin/env bash

sudo -k
sudo -S openconnect --juniper --user username --csd-wrapper ~/juniper-vpn-py/tnc vpn_server
Run Code Online (Sandbox Code Playgroud)

输出按照预期作为某个 ip 到达已连接的 tun1,但随后预期关闭,进程也随之生成。

pyn*_*exj 5

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

expect "Connected tun1 as"
expect -timeout -1 eof     ; # change the timeout value as needed
Run Code Online (Sandbox Code Playgroud)

或者

expect "Connected tun1 as"
interact
Run Code Online (Sandbox Code Playgroud)