为什么我的 expect 脚本会提前退出?
Why does my expect script exit prematurely?
这是我的例外脚本:
#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
我 运行 它看到 OpenVPN 询问我的客户端密码。但是脚本退出了,显然没有发送密码。当我尝试使用不正确的密码时,它是相同的(没有不正确的密码消息)。如果我从 expect 脚本的末尾删除 send -- "mypassword\r"
行,结果也完全相同。
这是我的第一个 expect 脚本,所以我的语法可能有误。或者可能是 OpenVPN 因使用 expect 脚本连接而将我踢走?
你的语法没问题。问题是在您发送密码后脚本没有更多命令到 运行,因此 expect 脚本退出并杀死 openvpn。
发送密码后需要做什么?
如果你只需要保持openvpn 运行ning,那么这样做:
#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
set timeout -1
expect eof
-1
表示 "infinite",expect eof
表示您正在等待生成的进程退出,然后 expect 脚本才能退出。
这是我的例外脚本:
#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
我 运行 它看到 OpenVPN 询问我的客户端密码。但是脚本退出了,显然没有发送密码。当我尝试使用不正确的密码时,它是相同的(没有不正确的密码消息)。如果我从 expect 脚本的末尾删除 send -- "mypassword\r"
行,结果也完全相同。
这是我的第一个 expect 脚本,所以我的语法可能有误。或者可能是 OpenVPN 因使用 expect 脚本连接而将我踢走?
你的语法没问题。问题是在您发送密码后脚本没有更多命令到 运行,因此 expect 脚本退出并杀死 openvpn。
发送密码后需要做什么?
如果你只需要保持openvpn 运行ning,那么这样做:
#!/usr/bin/expect
spawn openvpn --config peter.ovpn
expect -exact "Enter Private Key Password: "
send -- "mypassword\r"
set timeout -1
expect eof
-1
表示 "infinite",expect eof
表示您正在等待生成的进程退出,然后 expect 脚本才能退出。