Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

envoyer des commandes d'un script à un autre via /dev/ttys

3 réponses
Avatar
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

3 réponses

Avatar
Alain Ketterlin
(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.
Avatar
NicolasAlex.Michel.remove
Alain Ketterlin wrote:


Une fifo sûrement (cf mkfifo)



Ok, merci !

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

Hop

--
Nicolas Michel
Avatar
NicolasAlex.Michel.remove
Nicolas Michel wrote:

Alain Ketterlin wrote:

>
> 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