Executando comandos locais no OSX quando o comando é concluído na sessão ssh

2

No meu laptop OS / X, eu posso digitar "say done", e meu mac diz "done".

Localmente, acabei de fazer:

do-something.sh && say done

E isso me permite ir em torno de janelas / desktops separados até que o script termine.

Mas agora eu ssh do meu mac para uma máquina Linux remota. O que eu quero é poder dizer ao meu mac para rodar "diga pronto" quando um comando específico terminar. Alguma boa maneira de fazer isso?

    
por Dean J 27.01.2016 / 20:55

4 respostas

1

Dica de chapéu para um colega de trabalho, A Golden, que veio com isso imediatamente. Este é um recorte e cola de sua resposta, que funciona e prega completamente isso.

I picked "say-hi-locally" and set it up on my linux server as:
alias say-hi-locally="echo EMIT SAY HI"

Then, since I use ITerm2 as my local terminal, I set up a trigger in ITerm2 with the regexp "EMIT SAY HI" and told that to run the local command "say hi"

Now I can do:
do-something.sh; say-hi-locally

and when it finishes it will echo "EMIT SAY HI" which ITerm2 will then pick up and then my computer says "hi" to me! :-)
    
por 28.01.2016 / 05:46
0
ssh linux do-something.sh && say done

parece fazer o que você quer. Implementar alguma comunicação entre o host remoto e seu mac não parece viável.

Se você quiser executar mais comandos e estiver preocupado com a latência, use as opções ControlMaster e ControlPersist (muitas perguntas sobre isso já foram respondidas).

    
por 27.01.2016 / 21:33
0

você precisará de um servidor ssh no seu mac. Então você pode fazer o seguinte:

[you@mac]$ ssh linux
[you@linux]$ interactive_cmd; ssh mac say done

Você faz o login no seu host linux, executa o comando, quando ele é feito, o host linux ssh volta ao seu mac e executa o comando say .

    
por 27.01.2016 / 22:35
0

No seu Mac, inicie um servidor TCP que enviará qualquer coisa que receber para say :

mac $ while true; do nc -l 1234 | say; done

Então, quando você usar o SSH, use -R para encaminhar a porta 1234 para o seu servidor:

mac $ ssh -R 1234:localhost:1234 linux

Agora, o seu servidor Linux deve ter um túnel para o servidor nc no seu Mac e pode usar nc para enviar texto para ele:

linux $ echo done | nc localhost 1234
    
por 06.12.2017 / 14:57