防止期望退出EOF

时间:2017-01-24 18:06:13

标签: bash fork expect

我有一个使用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

和openconnect

#!/usr/bin/env bash

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

输出以预期的方式连接到连接的tun1,但是然后期望关闭,生成的过程也是如此。

1 个答案:

答案 0 :(得分:0)

在退出Expect scirpt之前,您必须等待生成的进程完成,否则可能会导致生成的进程过早被杀死。试试这样:

expect "Connected tun1 as"
expect eof

expect "Connected tun1 as"
interact