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
VPN
com o comando para matar o aplicativo - Execute um script de segundo plano pequeno para eliminar o aplicativo se
VPN
for 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
VPN
fosse iniciado, mas isso não impediria que o aplicativo fosse executado acidentalmente posteriormente. - Desde que você mencionou que você inicia
VPN
da 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
VPN
está 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.