Bonjour à tous,
Je cherche à piloter un programme spécifique à travers une connexion SSH via un autre programme lancé en local sur ma machine (le programme à piloter attend un jeu de commandes particulier). L'idée serait de me logguer en SSH sur la machine, lancer un certain nombre de commandes au niveau du shell (initialisation, mise en place de l'environnement, etc), puis lancer le programme à piloter. Une fois que ce programme est lancé, il faudrait donc que je puisse récupérer l'entrée et la sortie de celui-ci pour automatiser ce que je vais y envoyer.
Y'a-t'il moyen d'intercepter au niveau tty ou autre ? Le programme de pilotage serait en C.
Merci d'avance de vos réponses
# expect
Posté par Frédéric Perrin (site web personnel) . Évalué à 6.
Je suis en train de voir qu'il existe libexpect pour piloter expect depuis C.
# Duplication des E/S standards
Posté par pma . Évalué à 1.
A partir d'un programme en C, tu peux toujours redéfinir tes 3 flux d'E/S (stdin, stdout, stderr) à l'aide de l'appel dup(int) de <unistd.h> décrit dans "man dup".
Tu peux aussi le faire en ligne de commande: (ici en concatenant un fichier donné sur l'entrée standard puis un fichier test.sh sur l'entrée standard de mon programme "bash")
shell1# echo "echo hello world" > test.sh
shell1# cat /dev/stdin test.sh | bash
shell2# echo "ma commande à la main"
puis CTRL+D
affiche bien:
ma commande à la main
hello world
# Gni ?
Posté par benoar . Évalué à 4.
# La libssh
Posté par leviathan (site web personnel) . Évalué à 2.
J'ai réalisé un programme C++ en passant par cette bibliothèque pour lancer des commandes ssh simplement et vu mon niveau assez faible en C++, la bibliothèque est assez simple à manipuler.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.