Conexão, autenticação e comandos SSH atrasados

1

Meu computador doméstico, um Mac que executa o OS X 10.8.5, normalmente aceita conexões SSH pela Internet (já enviei por porta), mas está dormindo no momento. Às vezes pode acordar por várias razões enquanto estou longe de casa. Eu quero enviar alguns comandos SSH, mas não posso sentar e continuar tentando até que esteja acordado.

Existe uma maneira simples e não AppleScript de atrasar uma conexão SSH, autenticação de senha e entrada de comando até que o computador host responda? Estou usando um Mac longe de casa, mas gostaria de saber uma maneira de fazer isso em qualquer sistema operacional baseado em Unix. Normalmente, expira depois de um minuto ou mais de tentar se conectar.

Eu sei que na maioria dos emuladores de terminal, você pode digitar comandos enquanto os processos de bloqueio estão em execução e eles serão executados assim que esses processos forem concluídos. Um exemplo é digitar git push foo logo após git commit -a -m "foo" enquanto git commit -a -m "foo" ainda está em execução; git vai empurrar uma vez que é feito cometer. Eu pensei que poderia haver algum truque para fazer algo assim com o ssh através de um emulador de terminal.

    
por sudo 08.07.2014 / 06:46

1 resposta

1

Você pode verificar com ping se sua máquina for ativada e depois disparar um ou vários comandos ssh. Observe que você precisará configurar a autenticação baseada em certificado em seu host. Aqui está um pequeno script baseado no BASH do GNU / Linux, mas eu acho que você pode convertê-lo para qualquer que seja o Mac OS X.

#/bin/bash   
hostup=0
while [ $hostup -ne 1 ]; do
    ping -c 4 <hostname or IP>
    if [ $? -eq  0 ]; then
        ssh username@hostname <command to execute>
        hostup=1;
done

Apenas um comando por linha SSH e se você quiser usar parâmetros, você deve citar seu comando. Se você for executar os mesmos comandos o tempo todo, talvez um script em sua máquina doméstica esteja em ordem.

    
por 08.07.2014 / 07:58