启动时自动连接到 VPN

启动时自动连接到 VPN

我希望在 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_FORTIGATEPORT_FORTIGATEVPN_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

相关内容