我希望在 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.
Run Code Online (Sandbox Code Playgroud)
自动化此连接的挑战是我需要输入 VPN 密码,然后接受无效证书。此外,VPN 客户端似乎在连接后继续作为用户进程运行,而不是守护进程,这很好,但我需要它继续在后台运行。另外,当我执行 ps aux | grep forti,我注意到它不只运行一个进程,而是实际上运行四个完全相同的进程,这也很好。只是不知道这是否会影响我的自动化选项。如果连接失败,我还想自动重新启动连接。有什么建议?
小智 6
我正在使用此代码(您必须先安装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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5164 次 |
最近记录: |