Como posso acionar um script quando uma determinada porta se torna disponível para solicitações?

4

Eu quero disparar um script quando a porta 3000 é aberta por um processo. O processo é um servidor de desenvolvimento Rails, e eu só quero ser notificado quando terminar de rodar e a porta 3000 começar a aceitar solicitações.

    
por dan 01.11.2011 / 15:42

1 resposta

4

Aqui está um oneliner que simplesmente faz um loop até que a porta esteja aberta. Isso é rápido e sujo, mas você pode começar.

while ! nc -z localhost 3000; do sleep 0.1; done; echo 'The server is up!'

Substitua a instrução echo por sua ação de escolha.

  • nc é Netcat, "o canivete suíço para TCP / IP",
  • -z significa: não envie nenhum dado, apenas verifique se a porta está aberta,
  • while ! nc -z …; do sleep 0.1; done :. Manter a verificação e dormir por um décimo de segundo até que a porta se abre, ou seja Netcat retorna com um status zero (sucesso)
por 03.11.2011 / 21:04

Tags