Чтобы настроить OpenVPN для автоматического отключения при закрытии терминала, нужно запустить OpenVPN клиент с определенными параметрами или использовать скрипт, управляющий процессом OpenVPN.
Вот пример скрипта оболочки, который запускает OpenVPN и отслеживает, когда терминал закрывается:
```bash
#!/bin/bash
# Запускаем OpenVPN в фоновом режиме и запоминаем PID
sudo openvpn --config /path/to/your/config.ovpn &
VPN_PID=$!
# Устанавливаем ловушку на сигналы. В случае получения SIGINT или SIGTERM,
# отправляем SIGTERM процессу OpenVPN для его корректного завершения
trap "echo 'Прекращение работы...'; sudo kill -SIGTERM $VPN_PID; exit;" INT TERM
# Ждем, пока процесс OpenVPN не завершится
wait $VPN_PID
# После завершения процесса OpenVPN скрипт продолжит работу.
# Здесь мы делаем какие-либо пост-шаги по очистке, если необходимо.
exit 0
```
Чтобы использовать этот скрипт, сохраните его в файл, например, `run-vpn.sh`, сделайте файл исполняемым:
```bash
chmod +x run-vpn.sh
```
Запускайте скрипт из терминала и при закрытии терминала OpenVPN будет получать сигнал для завершения работы.
Кроме того, чтобы запускать OpenVPN с мониторингом закрытия терминала, можно использовать команду `expect`. Пример скрипта с использованием expect:
```bash
#!/usr/bin/expect
# Запускаем OpenVPN
spawn sudo openvpn --config /path/to/your/config.ovpn
# Делаем так, чтобы expect не завершался и ожидал закрытия терминала
interact {
eof {
# Действия, выполняемые при закрытии терминала
puts "Терминал закрыт. Отключаемся..."
# Отправляем Ctrl+C в процесс OpenVPN
send "\003"
# Ждем завершения OpenVPN
expect eof
# Закрываем процесс
close
exit
}
}
```
Сохраните этот код в файл, например, `run-vpn.expect`, установите пакет `expect` если он не установлен:
```bash
sudo apt-get install expect
```
Сделайте файл исполняемым:
```bash
chmod +x run-vpn.expect
```
Теперь, когда вы запустите `./run-vpn.expect`, OpenVPN будет отключаться при закрытии терминала.
Обратите внимание, что использование `sudo` в этих скриптах предполагает, что у вас есть соответствующие привилегии для запуска OpenVPN с правами администратора. Вы можете настроить `sudo`, чтобы запускать OpenVPN без ввода пароля, добавив соответствующую запись в файл `/etc/sudoers` с помощью команды `visudo`. Однако будьте осторожны с изменениями в этом файле, так как ошибки могут привести к проблемам с системными привилегиями.