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

时间:2019-02-08 05:43:04

标签: expect openvpn

这是我的脚本除外

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

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

这是我的第一个期望脚本,所以我的语法可能不正确。还是OpenVPN因为使用Expect脚本进行连接而让我踢了?

1 个答案:

答案 0 :(得分:1)

您的语法很好。问题是发送密码后脚本没有更多命令可运行,因此expect脚本退出,这会杀死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表示您在等待期望的脚本可以退出之前正在等待生成的进程退出。