Я вызываю ssh (OpenSSH) из OSX/Linux-C++- приложения через fork/exec для создания динамической переадресации портов. Это делается с помощью пакетного режима (-o BatchMode = yes) и закрытого ключа, который предоставляется ssh (-i Option). Сам вызов SSH не открывает оболочку (опция -N).
Это мой полный SSH-вызов:
ssh -N -D 9000 -o BatchMode=yes -i /path/to/private-key user@host
Я хотел бы приступить к своему заявлению, как только смогу, и поэтому я должен выяснить, удалось ли ssh создать канал. Сам SSH возвращается только в случае возникновения проблем.
Есть ли возможность, как я могу определить успешную переадресацию портов?
Конечно, я могу подождать, пока SSH не откроет порт, но я ищу более элегантное решение. Другим решением является проверка журнала SSH (-v), ожидающего "Вход в интерактивную сессию", но это звучит не очень переносимо для меня.