Não é possível executar corretamente o sistema operacional ssh-ed dentro do shell script

0

Eu criei um script ip-down no meu diretório etc / ppp /. Essencialmente eu estou tentando matar certos programas / servidores quando a VPN se desconecta, em seguida, exibir uma notificação em outro computador via ssh. Eu configurei as 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 do 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 iria bloquear isso não me deixaria se conectar ao meu vpn. Eu não sabia como permitir isso. Consegui permitir ssh, https, compartilhamento de tela, etc. Qualquer informação sobre isso também seria legal.

    
por TYPKRFT 01.02.2016 / 21:25

1 resposta

0

Não é uma resposta, mas sim uma solução.

Contexto: Eu tenho um Macbook antigo que eu uso como um Plex sem cabeça. Eu gostaria de mantê-lo conectado a VPN praticamente sempre. Também gostaria de receber notificações quando se conectar e desconectar.

Acabei criando um aplicativo de manipulação de eventos. Então eu usei o Apple Remote Events para chamá-lo e passar argumentos. Depois que os argumentos são passados e o manipulador de eventos é executado, eu digo ao aplicativo para sair. Isso evita que ocorra apenas em segundo plano. Por fim, eu escondi minha notificação do dock editando o plist. A razão pela qual eu criei um aplicativo manipulador em vez de apenas usar o Finder para exibir a notificação é porque eu 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

shell script 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 em seu diretório / etc / ppp / e é executado quando a VPN é desconectada. Você também pode criar um script de inicialização, que é executado quando você se conecta à sua VPN. Meu ip-up apenas liga todos os meus serviços e, em seguida, envia-me uma notificação informando que a VPN é de backup.

Comentários, sugestões são apreciadas. Ainda estou interessado em entender porque isso funcionaria, pois eu 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 para isso é muito confusa para mim.

    
por 02.02.2016 / 10:48