Как отслеживать, когда мое соединение OpenVPN установлено (systemd)

309
user.S

Я использую сервис openvpn-client @ .service для подключения к VPN. Когда я запускаю свой компьютер, требуется некоторое время для его подключения. Я хотел бы видеть уведомление на рабочем столе, когда соединение установлено. Желательно родное уведомление KDE.

Также было бы хорошо, если бы я мог получить уведомление, если соединение не удается.

Я знаю, что NetworkManager выдаст мне уведомление, но я бы хотел использовать systemd.

0

1 ответ на вопрос

1
cmc

Вы можете использовать notify-sendдля отправки уведомления.

Поэтому простой способ заставить это работать, состоит в том, чтобы systemctl statusповторно опрашивать скрипт bash и запускать этот скрипт в фоновом режиме .profile.

Это не элегантно, но вам понадобится меньше 5 минут, чтобы написать и будет работать нормально.

Редактировать: более системный способ сделать это - написать модуль, который зависит от вашей службы openvpn-client, и заставить ее отправить сообщение об успехе. Вы можете использовать системный таймер, который отменяется первым устройством для отправки сообщения об ошибке.

Но я не вижу смысла. Вам придется использовать переменные окружения, и они не будут более читабельными и надежными :)

Thank you for the answer. If I used the first method it seems there would either be some delay before I get the message or I would have to poll very often. The second method seems more like what I want but I noticed a somewhat different method I might be able to use. There is a .conf file for my VPN that OpenVPN uses. I can make it call scripts when the VPN goes up or down. I made it run notify-send like you recommended but because OpenVPN is run as root I don't see the message. Do you know how to get around this? I also tried putting `wall -n "VPN is up"` in there but all terminals get it. user.S 5 лет назад 0
You're welcome. You can use `sudo -u notify-send`. You'll also need to set the necessary environment variables (DBUS socket, if I recall correctly). You can dump all your environment variables to a temp file at startup with `export -p > filename` and load them with `source filename`. If that works you can experiment with removing some of the variables until you have a minimum set. If you use multiple X displays the easiest approach is to just message them all. cmc 5 лет назад 0
You can edit the systemctl script to call something on success or failure, too, if you'd rather. cmc 5 лет назад 0
To do it with systemctl: use OnFailure= for reporting failure and a second service that wants openvpn-client@ for reporing success. cmc 5 лет назад 0