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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Alain Ketterlin
Le #23047801
(Nicolas Michel) writes:

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



Ca c'est juste parce que input() attend quelque chose qui ressemble à du
python (puisqu'elle appelle eval(): input() équivaut à eval(raw_i nput()))

Quel serait la bonne méthode ?



Une fifo sûrement (cf mkfifo)

-- Alain.
NicolasAlex.Michel.remove
Le #23048531
Alain Ketterlin

Une fifo sûrement (cf mkfifo)



Ok, merci !

Bon, j'ai plus qu'à étudier la chose...

Hop

--
Nicolas Michel
NicolasAlex.Michel.remove
Le #23061041
Nicolas Michel
Alain Ketterlin
>
> Une fifo sûrement (cf mkfifo)

Ok, merci !

Bon, j'ai plus qu'à étudier la chose...

Hop



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
Publicité
Poster une réponse
Anonyme