
He creado un script ip-down en mi directorio etc/ppp/. Básicamente, estoy tratando de eliminar ciertos programas/servidores cuando la VPN se desconecta y luego mostrar una notificación en otra computadora a través de ssh. He configurado claves ssh y el siguiente comando funciona bien en la terminal, pero no dentro del script:
ssh {userName}@{address} 'osascript -e "display notification \"The VPN has disconnected.\" with title \"Server\" sound name \"Pop\""'
Todo lo demás en el guión funciona. Mi guión completo a continuación:
#!/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 al margen: estaba intentando bloquear todo el tráfico de torrents en en0 (ethernet en este dispositivo) con pf.conf pero cuando lo bloqueaba no me dejaba conectarme a mi VPN. No estaba seguro de cómo permitirlo. Pude permitir ssh, https, compartir pantalla, etc. Cualquier información al respecto también sería interesante.
Respuesta1
No es una respuesta, sino una solución alternativa.
Contexto: tengo una Macbook más antigua que uso como servidor Plex sin cabeza. Me gustaría mantenerlo conectado a VPN casi siempre. También me gustaría recibir notificaciones cuando se conecta y desconecta.
Terminé creando una aplicación de manejo de eventos. Luego utilicé Apple Remote Events para llamarlo y pasar argumentos. Después de pasar los argumentos y ejecutar el controlador de eventos, le digo a la aplicación que se cierre. Esto evita que simplemente permanezca inactivo en segundo plano. Por último, oculté mi notificación del muelle editando el plist. La razón por la que creé una aplicación de controlador en lugar de simplemente usar Finder para mostrar la notificación es porque quería tener un ícono personalizado para mi notificación.
Código para el asistente de notificación (controlador 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 aquellos que no lo saben, un script ip-down ingresa a su directorio /etc/ppp/ y se ejecuta cuando la VPN está desconectada. También puedes crear un script ip-up, que se ejecuta cuando te conectas a tu VPN. Mi ip-up simplemente activa todos mis servicios y luego me envía una notificación informándome que la VPN está respaldada.
Se agradecen comentarios y sugerencias. Todavía estoy interesado en entender por qué esto funcionaría, ya que tengo otro script que me notifica cuando ocurre x desde otro programa a través de ssh. También sigo muy interesado en pf.conf. La sintaxis me resulta muy confusa.