这是我的除外脚本:
#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
我运行它,看到OpenVPN询问我的客户端密码。但是脚本退出了,显然没有发送密码。当我尝试使用不正确的密码时,它是相同的(没有错误的密码消息)。如果我从expect脚本的末尾删除send -- "mypassword\r"
行,它也是完全相同的结果。
这是我的第一个期望脚本,所以可能我的语法错了。或者可能是因为OpenVPN让我使用期望脚本连接?
你的语法很好。问题是脚本在您发送密码后没有更多命令可以运行,因此期望脚本退出并杀死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脚本退出之前退出。