Comment puis-je triggersr un script lorsqu'un certain port devient disponible pour les requêtes?

Je veux triggersr un script lorsque le port 3000 est ouvert par un process. Le process est un server de développement Rails, et je veux juste être notifié quand il finit de tourner et le port 3000 commence à accepter les requests.

Voici un oneliner qui boucle simplement jusqu'à ce que le port soit ouvert. C'est rapide et sale, mais cela pourrait vous aider à démarrer.

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

Remplacez l'instruction echo par votre action de choix.

  • nc est Netcat, "le couteau de l'armée suisse pour TCP / IP",
  • -z signifie: ne pas envoyer de données, il suffit de vérifier si le port est ouvert,
  • while ! nc -z …; do sleep 0.1; done while ! nc -z …; do sleep 0.1; done : continuez à vérifier et à dormir pendant un dixième de seconde jusqu'à ce que le port s'ouvre, c.-à-d. que Netcat returnne avec un statut zéro (succès).