[C] - Problème ssh en c
Résolu
viro_ucp
Messages postés
3
Statut
Membre
-
viro_ucp Messages postés 3 Statut Membre -
viro_ucp Messages postés 3 Statut Membre -
Bonjour,
Quand j'exécute une commande de type depuis une console
je récupère la main.
Mais quand je le fais dans un programme en C, je n'arrive pas à récupérer la main.
J'ai essayé avec popen(), system() et execlp().
Je reprends la main seulement après que la commande ait fini de s'exécuter, celle-ci ferme la connexion ssh qui redonne ensuite la main au programme.
Le pclose() devient alors bloquant car ssh refuse de se terminer tant qu'il a un fils qui s'exécute.
Mon objectif serait d'exécuter la commande en fond de tache puis de récupérer la main au sein du programme.
PS : La connexion ssh se fait via clé publique/privé dsa, pas de problème de ce côté.
Quand j'exécute une commande de type depuis une console
ssh <destinataire> <commande>
je récupère la main.
Mais quand je le fais dans un programme en C, je n'arrive pas à récupérer la main.
J'ai essayé avec popen(), system() et execlp().
Je reprends la main seulement après que la commande ait fini de s'exécuter, celle-ci ferme la connexion ssh qui redonne ensuite la main au programme.
fp=popen( "/usr/bin/ssh -q -o KbdInteractiveDevices=no -o PasswordAuthentication=no -o RSAAuthentication=yes -o StrictHostKeyChecking=no root@192.168.1.1", "w");
fprintf(fp, "export DISPLAY=:0 \n");fflush (fp);
fprintf(fp, "nohup xeyes &\n");fflush (fp);
fprintf(fp, "exit\n");fflush (fp);
pclose(fp);
Le pclose() devient alors bloquant car ssh refuse de se terminer tant qu'il a un fils qui s'exécute.
Mon objectif serait d'exécuter la commande en fond de tache puis de récupérer la main au sein du programme.
PS : La connexion ssh se fait via clé publique/privé dsa, pas de problème de ce côté.
A voir également:
- [C] - Problème ssh en c
- Ssh download - Télécharger - Divers Web & Internet
- Probleme connexion SSH avec WinSCP ✓ - Forum Linux / Unix
- Ssh /sftp - Forum Linux / Unix
- Connexion graphique en ssh ✓ - Forum Autres distributions Linux
- Mauvaise configuration SSH ✓ - Forum Linux / Unix
2 réponses
Bonjour,
Dans ce cas de figure, utilise un fork ; le processus fils executant la commande.
Bon courage !
Dans ce cas de figure, utilise un fork ; le processus fils executant la commande.
Bon courage !
viro_ucp
Messages postés
3
Statut
Membre
J'ai essayé avec un fork(), le problème est que la commande s'exécute bien dans le fils, j'ai la main dans le processus père mais le lien ssh ne se ferme qu'après la fin de l'exécution du programme et non pas après avoir lancer le programme. Du coup, je me trimballe toujours avec un processus ssh.
le code source de screen a résolu mon problème
le programme appeler doit inclure :
ou le programme appelant :
le programme appeler doit inclure :
freopen("/dev/null", "r", stdin);
freopen("/dev/null", "w", stdout);
freopen("/dev/null", "w", stderr);
ou le programme appelant :
system( "/usr/bin/ssh -q -o KbdInteractiveDevices=no -o PasswordAuthentication=no -o RSAAuthentication=yes -o StrictHostKeyChecking=no root@192.168.1.1 \" export DISPLAY=:0; nohup xeyes </dev/null 1>/dev/null 2>/dev/null &\" " );