Envoyer des données au script shell en cours d’exécution

J’ai un script en cours d’exécution qui attend l’entrée et imprime “Attente de saisie” toutes les 15 secondes pour la sortie standard. Je dois émuler l’action de coller la liste des adresses IP dans stdin pendant que le script est en cours d’exécution. Par exemple, manuellement, je dois suivre ces étapes: copier la liste ci-dessous, y compris la nouvelle ligne après le dernier élément de la liste et la coller directement dans stdin.

127.0.0.1 127.0.0.2 127.0.0.3 

J’ai essayé d’utiliser des pipes et des redirections (avec les deux \ n et \ r) du fichier sans chance

 echo "127.0.0.1\n127.0.0.2\n" | script 

ou

 script < file 

où fichier contient les mêmes adresses IP. Aucune suggestion?

Utilisez un FIFO!

 mkfifo /path/to/tmp.fifo tail -f /path/to/tmp.fifo | script 

Maintenant, chaque fois que vous envoyez quelque chose au fifo (à partir d’un autre TTY, d’un processus quelconque), ce sera comme si vous aviez tapé dans le script en attente, par exemple

 echo "127.0.0.1" >> /path/to/tmp.fifo 

Utilisez le cat Si vous exécutez:

 cat | script 

vous pouvez couper-n-coller ou taper dans le tty.