Bonjour,
J'ai réalisé un script utilisant les commandes expect/spawn et send afin d'effectuer un scp distant sur une autre machine qui envoie automatiquement le mot de passe lorsque ce dernier est demandé.

Le shell marche très bien dans un terminal LINUX.

Cependant lorsque j’essaie de l'utiliser dans mon process C++, celui-ci échoue. J'ai essayé une exécution par un system() et popen() sans succès.
L'erreur "ioctl(raw): I/O error" est renvoyée lorsque je fais mon system();

Voici mon script expectl:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
 targetHost=$1
 password=$2
 sourceFile=$3
 destRep=$4
 
expect -c "
            spawn /usr/bin/scp -q $targetHost:$sourceFile $destRep
            expect -i $spawn_id { 
              "*password:*" { send -i $spawn_id $password\r\n; interact } 
              eof { exit }
            }
            exit
            "