使用expect将密码发送到vpn连接

时间:2016-06-29 20:04:48

标签: svn passwords expect

我想使用expect将密码发送到我的vpn连接但密码未正确发送。 我使用以下脚本:

#!/usr/bin/expect -d

set pass "myPassword"
spawn snx -g -s 199.203.xxx.xxx -c ~/vpn_connection/file(IL\).p12
match_max 100000
expect "Please enter the certificate's password:"
send "$pass\r"
expect eof

我收到错误: " SNX:连接中止。"这意味着密码是无限的

虽然如果我手动输入密码到cmd就可以了。 谢谢......

1 个答案:

答案 0 :(得分:0)

~中的Tcl char并不特殊(因此Expect),因此您的spawn命令应该这样写:

# '(' and ')' are not specical in Tcl.
spawn snx -g -s 199.203.xxx.xxx -c $env(HOME)/vpn_connection/file(IL).p12

# But '(' and ')' need to be quoted in shell.
spawn sh -c "snx -g -s 199.203.xxx.xxx -c ~/vpn_connection/file\\(IL\\).p12"
# or
spawn sh -c {snx -g -s 199.203.xxx.xxx -c ~/vpn_connection/file\(IL\).p12}