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를 실행했을 때 프로세스 하나만 실행하는 것이 아니라 실제로 동일한 프로세스 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