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

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

Meu computador doméstico, um Mac com OS X 10.8.5, normalmente aceita conexões SSH pela Internet (eu encaminhei a porta), mas está dormindo no momento. Às vezes, pode acordar por vários motivos enquanto estou fora de casa. Quero enviar alguns comandos SSH, mas não consigo sentar e continuar tentando até que ele acorde.

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 fora de casa, mas gostaria de saber uma maneira de fazer isso em qualquer sistema operacional baseado em Unix. Normalmente, o tempo expira após cerca de um minuto de tentativa de conexão.

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 foologo após git commit -a -m "foo"enquanto git commit -a -m "foo"ainda está em execução; git irá empurrar assim que terminar o commit. Achei que poderia haver algum truque para fazer algo assim com o ssh através de um emulador de terminal.

Responder1

Você pode verificar com ping se sua máquina liga e então 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 acho que você pode convertê-lo para qualquer Mac OS X que esteja usando.

#/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 quiser usar parâmetros, você deve citar seu comando. Se você executar os mesmos comandos o tempo todo, talvez um script em sua máquina doméstica seja adequado.

informação relacionada