Page 1 sur 1
Télémaintenance sur un process lancé au démarrage
Posté : dim. 10 avr. 2016 20:17
par Fred26100
Bonjour à tous,
Tout d'abord Je ne suis pas un pro de bash / unix et merci pour votre aide. Voilà mon problème:
Je voudrais lancer un progrramme Python au démarrage du Pi. Pour cela j'ajoute dans crontab une ligne du style :
@reboot python /home/pi/monprogramme.py
Le programme tourne, mais pour des raison de maintenance je voudrais voir ce qu'il affiche (avec Putty en SSH) et intéragir avec lui au clavier.
Quelqu'un connait-il les commandes à taper pour y parvenir. En gros faire une sorte de télémaintenance sur ce process.
Je ne suis pas en environnement graphique, que de pur TTY.
J'ai vu que "ps -ef" me permet afficher le PID de mon programme, mais après ? car Google n'est plus mon ami à ce stade
Merci pour vos réponses
Re: Télémaintenance sur un process lancé au démarrage
Posté : lun. 11 avr. 2016 06:33
par Manfraid
Dans ce cas ce que je peu te conseillé c'est de le lancer dans un tmux ou screen au lieu de directement comme ça quand tu te connecte tu y aura accès comme tu veux. Car de connaissance tu ne pourra jamais reprendre la main sur le processus de ton programme
Re: Télémaintenance sur un process lancé au démarrage
Posté : lun. 11 avr. 2016 13:32
par mguyard
Oui le screen me semble la meilleure solution si tu veux interagir avec.
Si tu veux juste voir ce qu'il se passe alors un fichier de logs bien rempli suffit
Envoyé de mon iPhone en utilisant Tapatalk
Re: Télémaintenance sur un process lancé au démarrage
Posté : mar. 19 avr. 2016 16:36
par Fred26100
Ok je vous remercie de vos réponses. Je vais m'y ateler.
Re: Télémaintenance sur un process lancé au démarrage
Posté : ven. 29 avr. 2016 10:47
par Le_Marius
Bonjour,
Est-il possible de sauvegarder dans un fichier texte tout ce qui est affiché dans screen ?
exemple:
while :
do
cat screen... >> mon_fichier.txt
sleep 1
done
Re: Télémaintenance sur un process lancé au démarrage
Posté : ven. 29 avr. 2016 12:57
par spourre
Le_Marius a écrit :Bonjour,
Est-il possible de sauvegarder dans un fichier texte tout ce qui est affiché dans screen ?
exemple:
while :
do
cat screen... >> mon_fichier.txt
sleep 1
done
Bonjour,
Comme toujours avec UNIX (et donc Linux), la réponse est oui. Il y a même, très souvent, plusieurs chemins pour y arriver.
Il y a des fondamentaux à assimiler, je te l'avais déjà indiqué dans un autre topic. Les notions de fichiers, d'entrée/sortie standards et de redirection (le pipe et le > ou le >>) en font partie.
Comme je t'avais répondu dans un autre sujet, j'utilise minicom. Pour te répondre j'ai installé screen et ressorti mon vieux récepteur GPS (souris HOLLUX) qui envoie des trames MNEA sur le port USB.
Screen permet de lancer et de reprendre la main sur des process (comme si tu branchais un écran/clavier sur chacun d'eux, avec un commutateur). Il ouvre donc un shell qui permet de lancer des exécutables et récupère la sortie standard de ce programme..
Tu veux donc que le programme lancé par screen duplique sa sortie standard (qui sera récupérée et afficher par screen) et écrive aussi dans un fichier.
La commande tee est justement faite pour cela et peut, soit écraser le fichier de sortie, soit ajouter à la fin du fichier (un peu comme le >> que tu connais). Cela se fait avec l'option -a.
Pour résumer:
-) modifie ton script pour qu'il écrive aussi dans un fichier:
cat /dev/ttyUSB0 | tee -a nom-de_ton_fichier (la barre verticale est le symbole du pipe)
-) lance screen
-) dans le shell de screen, lance ton script.
l'avantage est que les données seront tout de même capturées, même si tu "branches" screen sur un autre process.
Nota: UNIX is user friendly mais il choisit ses amis

)))
Sylvain
CQFD
Re: Télémaintenance sur un process lancé au démarrage
Posté : ven. 29 avr. 2016 14:40
par Le_Marius
Si je veux obtenir quelque chose de propre je ne peux passer que par screen (ttyUSB0 me donne des mauvais caractères)
du coups je balance le screen /dev/ttyUSB 1200.....
et j'aimerai combiner avec screen -X at 0 hardcopy /home/...
j'ai essayé avec tee mais aucun résultat
Re: Télémaintenance sur un process lancé au démarrage
Posté : ven. 29 avr. 2016 19:39
par spourre
Le_Marius a écrit :Si je veux obtenir quelque chose de propre je ne peux passer que par screen (ttyUSB0 me donne des mauvais caractères)
du coups je balance le screen /dev/ttyUSB 1200.....
et j'aimerai combiner avec screen -X at 0 hardcopy /home/...
j'ai essayé avec tee mais aucun résultat
Comme déjà indiqué dans l'autre fil, si des caractères bizarres sont affichés, cela peut provenir:
- du capteur qui envoie des caractères non imprimable (octal par exemple);
- d'un mauvais réglages des paramétres du port série (vitesse, format du mot, bit de start, de stop, de parité, contrôle de flux matériel, logiciel, sans ...)
cela& se vérifie et se modifie avec la commande stty.
- du choix du jeu de caractères du terminal (historiquement l'ASCII mais, avec les environnements fenêtrés, il est courant de pouvoir choisir des jeux de caractères accentués).
C'est pour cela que je t'ai demandé, sans obtenir de réponse précise (secret défense ???), quel était ce fameux capteur branché sur le port USB. Quelle trame génère-t-il ?
Quant au tee, je ne sais pas où tu l'as placé. Chaque fois que je te fais une réponse, je teste pour vérifier et te donne le code de la commande et le résultat.
Je crains de ne pas pouvoir t'aider davantage, ne pouvant reproduire le comportement de ce capteur.
Bon courage
Sylvain
Re: Télémaintenance sur un process lancé au démarrage
Posté : mar. 3 mai 2016 10:59
par Le_Marius
Bonjour,
Je vous remercie encore pour votre aide précieuse.
Désolé mais je ne pas donner plus d'information sur l'appareil.
Le script fonctionne enfin :
# paramétrage de la voie ttyUSB0
(
stty 1200
stty cs7
stty parenb
stty -parodd
)</dev/ttyUSB0> dev/ttyUSB0
echo "debut"
while True;
echo "while"
do
cat /dev/ttyUSB0 >>/home/pi/Desktop/buffer.txt
done
Ce programme fonctionne mais j'ai remarqué que pour pouvoir lire le fichier avec l'éditeur de texte , je dois ouvrir le fichier sur libreoffice writter et ensuite le sauvegarder en tant que .txt
une fois cette opération manuelle faite, j'utilise la commande sed pour supprimer les # (qui sont ici les caractères posant problème)
Je ne comprends pas pourquoi il faut passer par libreoffice pour pouvoir le lire ensuite sur l'éditeur de texte.
Si cette opération n'est pas faite, le fichier est vide quand on le lit avec l'éditeur de texte.
Est-il possible de remplacer ces commandes manuelles par un script ?
-ouverture du fichier avec libreoffice writter
-sauvegarde sous .txt (pas besoin de changer de nom)