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つだけ実行するのではなく、実際に同じプロセスを4つ実行していることを発見しました。これが私の自動化の選択に影響を与えるかどうかはわかりません。また、接続に失敗した場合は自動的に再起動したいと思います。どんな提案がありますか?
答え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