Redirection de l'entrée standard d'un processus actif

Bonjour à tous !

Bon, j’espère que quelqu’un pourra m’aider car je m’arrache les cheveux.

Mon problème, j’ai un serveur fournissant un prompt (serveur minecraft…) et j’aimerai injecter dans ce prompt du texte à partir d’un script. En gros, je voudrais contrôler l’entrée standard de se serveur à partir d’un script, et ce pendant l’exécution du serveur.

Ce que j’ai déjà essayé :
[*]mon_programme < tube_nommé

et écrire dans le pipe, deux problèmes :

1/ le programme attends que le pipe reçoive quelque chose pour démarrer

2/ une fois que le programme a démarré, je ne peux plus lui envoyer quoique ce soit à travers le pipe. Et aussi à travers le clavier ><

[*]J’avais essayer avec screen (avec l’option -X stuff qui permet d’envoyer ce que l’on veut sur l’entrée standard du screen) mais je dois lancer le screen détaché, et donc avec l’option -dm. Et je pense que c’est un bug de screen, mais c’est impossible d’utiliser -X stuff sur un screen qui a été lancé avec -dm, il faut d’abord le rattacher manuellement et le détacher et là ca marche (et je ne peux pas faire ça puisque je veux passer par des scripts et qu’il n’y a donc pas de terminal sur lequel je peux rattacher le screen). J’ai d’ailleurs fait un rapport de bug.

Merci

Tout d’abord, regardes dans les options de ton programme si tu n’en as pas une pour ça, genre ton_ptogramme -f fichier_script.

Tu peux tenter la syntaxe « Here-Document » :

ton_programme <<'EOF'
commande1
commande2
...
EOF

Sinon, regardes du côté de expect : en.wikipedia.org/wiki/Expect

Merci pour la réponse, comme je le disais, la redirection ne marche pas c’est du tout ou rien, je ne peu qu’envoyer toute les commandes d’un coup et après plus rien.

Par contre pour expect, c’est exactement ce qu’il me faut, mais les expressions régulières n’ont pas l’air de fonctionner.

expect { -re "Connected players: $" { send "stop\n" expect "Saving chunks" exit } "Connected players: " { send "list\n" } }

Il ne rentre pas dans le “Connected players: $” et continue dans la seconde partie (alors qu’il devrait rentrer dans la première). J’ai essayé plein de variantes (comme “Connected players: .” pour envoyer list) mais rien ne fonctionne.

Est-ce que je fait quelque chose de travers?

En tout cas merci.