Opções para impedir que um aplicativo seja executado enquanto a VPN estiver em execução
Existem várias opções para evitar a execução de um aplicativo quando VPN está em execução:
- Combine o comando para abrir
VPNcom o comando para matar o aplicativo - Execute um script de segundo plano pequeno para eliminar o aplicativo se
VPNfor executado
Embora a primeira opção pareça ser a mais limpa, existem algumas razões para escolher a segunda:
- O aplicativo poderia muito bem ser eliminado sempre que
VPNfosse iniciado, mas isso não impediria que o aplicativo fosse executado acidentalmente posteriormente. - Desde que você mencionou que você inicia
VPNda GUI, Você teria que mudar a maneira como iniciarVPN, combiná-lo com o kill do aplicativo.
Então ...
Abaixo de um script de segundo plano pequeno para garantir que o aplicativo não esteja sendo executado ao mesmo tempo que VPN .
Como verificar se a VPN está em execução
Para verificar se VPN está em execução ou não, a resposta verifica se a string <OpenVPNserver> está presente na saída do comando
route
ou não. Por favor, verifique se este é o caso primeiro. Se não, precisamos encontrar outra string de identificação.
Como o script funciona
-
Uma vez por dois segundos, o script verifica se
VPNestá sendo executado, verificando se o sctring<OpenVPNserver>está na saída de:route -
(Somente) se assim for, o script verifica se o aplicativo está sendo executado, com o comando:
pgrep <application>e mata em caso afirmativo, com o comando:
kill <pid>
O script
#!/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()
Como usar
-
Primeiro abra um terminal, execute a VPN como você está acostumado e verifique se a string
<OpenVPNserver>ocorre na saída do comandoroute -
Se sim, copie o script acima em um arquivo vazio, salve-o como
prevent_run.py -
Teste- execute o script com o comando:
python3 /path/to/prevent_run.py <processname>(eu testei por exemplo com o comando
python3 /home/jacob/Bureaublad/prevent_run.py gedit) -
Se tudo funcionar bem, adicione-o aos aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
python3 /path/to/prevent_run.py <processname>
Nota
Como de costume (e como deveria ser), o script é extremamente leve. Não acrescenta nenhum "ruído de fundo" perceptível.