espera que a conexão automática seja concluída

4

Estou tentando criar um script que execute alguns comandos que demorem a ser executados e exijam uma conexão constante, mas

autossh user@server
wait $! #or wait ${!}

commandA
commandB

não funciona (estou assumindo porque autossh cai em segundo plano). A GUI aparece solicitando uma senha e, enquanto isso, os próximos comandos são executados.

Como posso esperar por uma conexão estabelecida antes de executar os próximos comandos?

Atualização:

autossh -f = > "... faz com que o autossh caia para o segundo plano antes de executar o ssh ..."

so com o -f wait não faz nada, sem ele, você espera no ssh que nunca terminará ...

    
por jtzero 20.12.2011 / 04:22

1 resposta

1

Se eu entendi corretamente, seu problema é que você quer esperar até que a autenticação seja bem-sucedida antes de continuar com o restante do script.

Eu resolveria isso com autenticação de chave pública e ssh-agent .

Quando isso estiver configurado e o ssh-agent estiver em execução, o ssh não pedirá uma senha e seu script será autenticado corretamente a cada vez. (Não é exatamente o mesmo que garantir que a conexão está funcionando, mas pode ser suficiente para seus propósitos)

Duas outras soluções alternativas vêm à mente:

  1. Use tcptraceroute em um loop while para verificar se um encaminhamento de porta está funcionando (supondo que você tenha encaminhamento de porta em uso ou possa criar um para esse propósito). Não saia do ciclo até obter uma resposta bem-sucedida.
  2. Coloque seus comandos de longa duração em um script no lado remoto e execute aqueles na tela ou nohup. Um truque que usei no passado é gerar um script, copiá-lo para o lado remoto e executá-lo usando nohup.
por 25.04.2012 / 11:14