J'appelle ssh (OpenSSH) à partir d'une application OSX/Linux-C++ via fork/exec pour créer un transfert de port dynamique. Ceci est fait en utilisant le mode batch (-o BatchMode=yes) et une clé privée qui est fournie à ssh (-i Option). L'appel SSH lui-même n'ouvre pas un Shell (Option -N).
C'est mon appel SSH complet :
ssh -N -D 9000 -o BatchMode=yes -i /path/to/private-key user@host
Je voudrais procéder à mon application dès que possible et je dois donc savoir si ssh a réussi à créer le canal. SSH lui-même ne retourne que s'il a un problème.
Existe-t-il une possibilité de détecter un transfert de port réussi ?
Bien sûr, je peux attendre que le port soit ouvert par SSH mais je cherche une solution plus élégante. Une autre solution consiste à inspecter le journal (-v) de SSH en attendant "Entering interactive Session" mais cela ne me semble pas très portable.