envoyer des commandes d'un script à un autre via /dev/ttys
Le
NicolasAlex.Michel.remove
Bonjour
J'essaie de faire communiquer un script bash et un script python.
Mon idée première était de trouver le ttys utilisé, puis d'envoyer du
texte dedant.
En interactif le texte apparait bien dans l'autre terminal,
mais n'est pas interprété, ou je ne sais quoi.
Par exemple dans python je tapes
>>> qq=input()
Puis dans bash :
echo asdf >/dev/ttys000
python me retourne :
asdf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Quel serait la bonne méthode ?
suffit-il de faire un EOF, et si oui comment ?
Merci !
--
Nicolas Michel
J'essaie de faire communiquer un script bash et un script python.
Mon idée première était de trouver le ttys utilisé, puis d'envoyer du
texte dedant.
En interactif le texte apparait bien dans l'autre terminal,
mais n'est pas interprété, ou je ne sais quoi.
Par exemple dans python je tapes
>>> qq=input()
Puis dans bash :
echo asdf >/dev/ttys000
python me retourne :
asdf
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
Quel serait la bonne méthode ?
suffit-il de faire un EOF, et si oui comment ?
Merci !
--
Nicolas Michel

Poser une question


Ca c'est juste parce que input() attend quelque chose qui ressemble à du
python (puisqu'elle appelle eval(): input() équivaut à eval(raw_i nput()))
Une fifo sûrement (cf mkfifo)
-- Alain.
Ok, merci !
Bon, j'ai plus qu'à étudier la chose...
Hop
--
Nicolas Michel
Bon, Alain, tu sais déjà ça, mais des fois que ça intéresse quelqu'un
d'autre, voici la solution :
$ cat fifo_reader.py
#!/usr/bin/python
import os
f=file("fifo.tmp","r")
for i in f:
print i
$ mkfifo fifo.tmp
$ ./fifo_reader.py
$ echo fifo rules > fifo.tmp
Donc en gros on crée un "pipe nomé" (un fifo) dans le bash via la
commande mkfifo.
Puis on a un script python qui se connecte sur ce fifo,
puis qui attends que quelque chose entre dans ce fifo.
Après, en bash on écrit un truc dans le fifo et ça déclanche le script
python qui peut alors afficher le contennu de ce qu'on a envoyé en bash.
Mon but étant d'avoir une petite interface graphique pour dire à
l'utilisateur ce qui se passe quand je fais tourner des scripts de
maintenance en bash.
Juste une question :
Si je veux ajouter quelques bouton, je suppose qu'il faut faire un
thread ?
Merci encore !
--
Nicolas Michel