Estou chamando ssh (OpenSSH) de um aplicativo OSX / Linux-C ++ - via fork / exec para criar um encaminhamento de porta dinâmico. Isso é feito usando o modo em lote (-o BatchMode = yes) e uma chave privada fornecida ao ssh (-i Option). A chamada SSH em si não abre um shell (-N Opção).
Esta é a minha chamada SSH completa:
ssh -N -D 9000 -o BatchMode=yes -i /path/to/private-key user@host
Gostaria de prosseguir com meu aplicativo assim que possível e, portanto, tenho que descobrir se o ssh conseguiu criar o canal. O próprio SSH retornará apenas se houver um problema.
Existe a possibilidade de detectar um encaminhamento de porta bem-sucedido?
É claro que posso esperar até que a porta seja aberta pelo SSH, mas estou procurando uma solução mais elegante. Outra solução é inspecionar o Log (-v) do SSH aguardando "Entrando na sessão interativa", mas isso não me parece muito portátil.