Назад | Перейти на главную страницу

Как отключить сильное VPN-соединение от скрипта?

Мне нужно создать сценарий bash в Linux, который подключается к VPN, обрабатывает некоторые задачи, а затем отключается.

Для подключения к VPN я использую forticlient ssl vpn (например, fortinet, но вместо этого для VPN). Например:

./forticlientsslvpn_cli --server 172.17.97.85:10443 --vpnuser forti

Кто-нибудь знает, как потом отключиться от скрипта?

На этой странице кто-то создал сценарий ожидания для клиента для обработки отключения http://euer.krebsco.de/scripting-the-fortigate-vpn-client.html

#!/usr/bin/expect -f
# cd into the 64 bit folder of the client
# usage: efort.exp

spawn ./forticlientsslvpn_cli --server <VPNIP>:<VPNPORT> --vpnuser <VPNUSER> 2>&1
log_user 0
send_user "Logging in\n"
expect "Password for VPN:"
send "<VPNPASSWORD>\n"

# i needed ths for 'certificate error'
expect "Would you like to connect to this server"
send "Y\n"
send_user "Beginning to connect\n"
expect "STATUS::Tunnel running"
send_user "Tunnel running!\n"

# this is how long the next expect waits for pattern match, in seconds
set timeout 90001
expect "STATUS::Tunnel closed"
send_user "Tunnel closed!\n"
send_user "Dying\n"
close
exit

В конце концов, выполните цикл по сценарию, и все готово!

#!/bin/sh
cd "$(dirname "$(readlink -f "$0")")"
while sleep 1;do
    expect efort.exp
    echo "Restarting forticlient !"
done

В вашем случае просто запишите PID forticlientsslvpn_cli обработать и отправить SIGHUP, SIGQUIT или SIGTERM. Предпочтительным сигналом является тот, который обеспечивает плавное отключение. Немного грязное решение (хотя, возможно, достаточно хорошее для вас) - использовать просто killall -s SIG... forticlientsslvpn_cli.

Устройства Fortigate также поддерживают соединения IPsec в стиле Cisco, и для Linux доступно несколько программных клиентов, поэтому замена клиента SSL VPN может быть другим выходом.