
Eu criei um script ip-down no meu diretório etc/ppp/. Essencialmente, estou tentando encerrar determinados programas/servidores quando a VPN é desconectada e, em seguida, exibir uma notificação em outro computador via ssh. Configurei chaves ssh e o seguinte comando funciona bem no terminal, mas não dentro do script:
ssh {userName}@{address} 'osascript -e "display notification \"The VPN has disconnected.\" with title \"Server\" sound name \"Pop\""'
Todo o resto no script funciona. Meu script completo abaixo:
#!/bin/sh
killall someApp1
killall someApp2
killall someApp3
killall someApp4
ssh {userName}@{address} 'osascript -e "display notification \"The VPN has disconnected.\" with title \"Server\" sound name \"Pop\""'
vpn-connect &
Nota lateral: eu estava tentando bloquear todo o tráfego de torrent em en0 (ethernet neste dispositivo) com pf.conf, mas quando eu bloqueava, ele não me permitia conectar ao meu VPN. Eu não tinha certeza de como permitir isso. Consegui permitir ssh, https, compartilhamento de tela, etc. Qualquer informação sobre isso também seria legal.
Responder1
Não é uma resposta, mas uma solução alternativa.
Contexto: tenho um Macbook antigo que uso como servidor Plex sem cabeça. Eu gostaria de mantê-lo conectado à VPN quase sempre. Também gostaria de receber notificações quando ele conectar e desconectar.
Acabei criando um aplicativo de manipulação de eventos. Então usei o Apple Remote Events para chamá-lo e passar argumentos. Depois que os argumentos são passados e o manipulador de eventos é executado, digo ao aplicativo para encerrar. Isso evita que ele fique ocioso em segundo plano. Por último, escondi minha notificação do dock editando o arquivo plist. A razão pela qual criei um aplicativo manipulador em vez de apenas usar o Finder para exibir a notificação é porque queria ter um ícone personalizado para minha notificação.
Código para o auxiliar de notificação (manipulador de eventos):
on run
idle
end run
on idle argv
try
eHandler(item 1 of argv, item 2 of argv, item 3 of argv)
end try
end idle
on eHandler(message, title, soundName)
set theMessage to message as string
set theTitle to title as string
set theSoundName to the soundName as string
display notification theMessage with title theTitle sound name theSoundName
end eHandler
Script de shell ip-down:
#!/bin/sh
# kill applications
killall someApp1
killall someApp2
killall someApp3
killall someApp4
# Open Notification Helper
osascript <<EOF
set remoteMachine to "eppc://{userName}:{password}@{address}"
tell application "Finder" of machine remoteMachine
open ("/Applications/Notification Helper.app" as POSIX file)
end tell
EOF
# Sends Notification Helper arguments
osascript <<EOF
tell application "Notification Helper" of machine "eppc://{userName}:{password}@{address}"
TestHandler("The VPN has been disconnected.", "Media Server", "Pop")
quit
end tell
EOF
# Calls applescript which reconnects my VPN.
# The & Stops script from waiting to end
vpn-connect &
Para quem não sabe, um script ip-down entra no diretório /etc/ppp/ e é executado quando a VPN é desconectada. Você também pode criar um script ip-up, que é executado quando você se conecta à VPN. Meu ip-up apenas ativa todos os meus serviços e me envia uma notificação informando que a VPN está com backup.
Comentários, sugestões são apreciados. Ainda estou interessado em entender por que isso funcionaria, pois tenho outro script que me avisa quando x acontece de outro programa via ssh. Também ainda estou muito interessado em pf.conf. A sintaxe disso é muito confusa para mim.