Netcat et tee redirection via un script bash

2

Question rapide qui me hante toute la journée .. J'ai un script bash qui inclut cette ligne:

nc -l 8044 | tee nc-output &

La sortie de netcat n’est jamais écrite dans nc-output. Si je lance cette ligne en dehors du script bash, cela fonctionne.

nc -l 8044 > afile &

Aussi ne fonctionne pas, mais fonctionne en dehors d'un script bash.

J'ai besoin de l'esperluette pour pouvoir exécuter le processus séparément et poursuivre l'exécution de mon script batch. Toute suggestion sera appréciée!

Merci!

Gregorio Di Stefano
la source
Une chose qui me vient à l’esprit: votre script a-t-il un répertoire de travail différent de celui que vous attendez?
Mikey Boldt
Je ne pense pas que ce soit le problème. Le script crée un fichier vide à chaque exécution. Rien n’est écrit.
Gregorio Di Stefano le

Réponses:

2

Le problème est que dès que nc accepte une connexion, il essaiera de lire stdin. Lorsque vous exécutez ceci en tant que script bash, il lit toujours immédiatement EOF et ferme la connexion, ce qui ne se produit pas lorsque vous l'exécutez en dehors d'un script.

Utilisez -dswitch pour empêcher nc de lire stdin.

nc -d -l 8044 > afile &
fmanco
la source
Je vais essayer de vous répondre! Merci!
Gregorio Di Stefano le