为什么我的期望脚本过早退出?

问题描述 投票:0回答:1

这是我的除外脚本:

#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"

我运行它,看到OpenVPN询问我的客户端密码。但是脚本退出了,显然没有发送密码。当我尝试使用不正确的密码时,它是相同的(没有错误的密码消息)。如果我从expect脚本的末尾删除send -- "mypassword\r"行,它也是完全相同的结果。

这是我的第一个期望脚本,所以可能我的语法错了。或者可能是因为OpenVPN让我使用期望脚本连接?

expect openvpn
1个回答
1
投票

你的语法很好。问题是脚本在您发送密码后没有更多命令可以运行,因此期望脚本退出并杀死openvpn。

发送密码后你需要做什么?

如果你只需要保持openvpn运行,那么这样做:

#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
set timeout -1
expect eof

-1表示“无限”,而expect eof表示您正在等待生成的进程在expect脚本退出之前退出。

© www.soinside.com 2019 - 2024. All rights reserved.