Как узнать, не удалось ли установить соединение SSH?
Я должен запустить ssh
Команда в отдельном процессе (так с помощью execlp
) для подключения работающей машины к другой машине в той же локальной сети. Дело в том, что я должен установить, что введенное имя хоста действительно, поэтому ssh
соединение успешно.
Поскольку, execlp
заменяет образ вызывающего процесса при успешном выполнении команды (что будет иметь место с ssh
), насколько нам известно, в процессе вызова нет способа узнать, является ли ssh
соединение было успешно установлено.
Следовательно, единственное решение этого неудобного поведения, которое я могу придумать, состоит в том, чтобы утверждать, что заданное имя хоста машины, к которой нужно подключиться, является действительным. Как я могу / должен об этом?
(Действительное имя хоста - это просто имя, которое существует и, конечно, достижимо, будь то IP-адрес или псевдоним)
1 ответ
Для того, чтобы сэкономить все настройки труб, я использую
popen()
бежатьssh
, Так что да, если нет другого пути, мне, возможно, придется пойти по менее ленивому пути....waitpid()
...
Вам не нужно идти по менее ленивому пути. man popen
:
pclose()
Функция ожидает завершения связанного процесса и возвращает статус завершения команды, возвращеннойwait4
(2).