我希望在 CentOS 6.5 机器启动时自动启动 VPN 连接。我有一个 Fortinet VPN 客户端,在命令行上运行如下:
[centhost]$./forticlientsslvpn_cli --server 10.0.0.50:443 --vpnuser userxyz --keepalive
VPN Password:
Server certificate is invalid. Do you want to connect anyway? [y/n]
Connection successful.
Tunnel running.
自动执行此连接的挑战是我需要输入 VPN 密码,然后接受无效证书。另外,VPN 客户端在连接后似乎会继续作为用户进程运行,而不是守护进程,这很好,但我需要它在后台继续运行。另外,当我执行 ps aux | 时grep forti,我注意到它不仅仅运行一个进程,而是实际上运行四个相同的进程,这也很好。只是不知道这是否会影响我的自动化选择。我还想在连接失败时自动重新启动。有什么建议么?
答案1
我正在使用此代码(您必须expect
先安装该软件包):
我已经安装forticlientsslvpn_cli
在/opt/forticlientsslvpn
.将IP_FORTIGATE
、PORT_FORTIGATE
、VPN_USERNAME
、 和替换VPN_PASSWORD
为您的值。
#!/usr/bin/expect -f
set force_conservative 0 ;
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout -1
spawn $env(SHELL)
match_max 100000
send -- "cd /opt/forticlientsslvpn/\r"
send -- "./forticlientsslvpn_cli --server IP_FORTIGATE:PORT_FORTIGATE --vpnuser VPN_USERNAME"
expect -exact "./forticlientsslvpn_cli --server IP_FORTIGATE:PORT_FORTIGATE --vpnuser VPN_USERNAME"
send -- "\r"
expect -exact "\r
Password for VPN:"
send -- "VPN_PASSWORD\r"
expect -exact "\r
STATUS::Setting up the tunnel\r
STATUS::Connecting...\r"
send -- "Y\r"
expect eof