Существует программа, что у меня не должно быть выполнения каждый раз, когда моя VPN работает. Я не хочу обращаться к закрытию его вручную каждый раз, потому что я мог бы забыть когда-то.
Я хотел бы гарантировать, что они не работают одновременно. Это могло означать, уничтожают тот, когда другие запуски, или препятствуют тому один открываться, когда другой открыто.
Существует несколько опций предотвратить запуск приложения когда VPN
работает:
VPN
с командой для уничтожения приложенияVPN
выполненияХотя первая опция, кажется, является самой чистой, существует несколько причин выбрать второе:
VPN
запускается, но это не предотвратило бы приложение для выполнения случайно впоследствии.VPN
от GUI необходимо было бы изменить путь, как запустить VPN
, объединить его с уничтожением приложения.Так...
Ниже маленького фонового сценария для проверки приложение не работает в то же время, что и VPN
.
Проверять если VPN
работает или нет, проверки ответа если строка <OpenVPNserver>
присутствует в выводе команды
route
или нет. Проверьте, если это верно, сначала. В противном случае мы должны найти другую строку идентификации.
Однажды в две секунды, сценарий проверяет если VPN
работает путем проверки если строка <OpenVPNserver>
находится в выводе:
route
(Только) если так, сценарий проверяет, работает ли приложение с командой:
pgrep <application>
и уничтожает его если так, с командой:
kill <pid>
#!/usr/bin/env python3
import subprocess
import sys
import time
app = sys.argv[1]
def check_ifrunning():
# check if connection is up or down
get_routeinfo = subprocess.check_output(["route"]).decode("utf-8")
if "<OpenVPNserver>" in get_routeinfo:
try:
pid = subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
subprocess.Popen(["kill", pid])
except subprocess.CalledProcessError:
pass
while True:
time.sleep(2)
check_ifrunning()
Сначала откройтесь, терминальная, выполненная VPN как Вы привыкли к и проверка если строка <OpenVPNserver>
происходит в выводе команды
route
Если так, Копия сценарий выше в пустой файл, сохраните его как prevent_run.py
Тестовый прогон сценарий с командой:
python3 /path/to/prevent_run.py <processname>
(Я протестировал его, например, с командой python3 /home/jacob/Bureaublad/prevent_run.py gedit
)
Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:
python3 /path/to/prevent_run.py <processname>
Как обычно (и как он должен быть), сценарий является чрезвычайно легким весом. Это не добавляет значимого "фонового шума" безотносительно.