Я работаю над инструментом, который читает конфигурацию iptables с удаленного хоста через SSH2 с использованием расширения PECL SSH2. Я могу успешно выполнить соединение с командами хоста, аутентификации и выполнения. Проблема, с которой я столкнулась, иногда поток не содержит никаких данных.Пустое содержимое потока SSH2 для PHP, даже с stream_set_blocking?
/**
* Load the current firewall configuration
* @return bool
*/
public function loadRules() {
$stream = ssh2_exec($this->connection,"~/iptsave;");
stream_set_blocking($stream,true);
$iptablesSave = stream_get_contents($stream);
if(empty($iptablesSave)) {
return false;
}
parent::restore($iptablesSave);
return true;
}
Около 25% времени, loadRules()
возвращает ложь, даже при подключении к locahost вместо удаленной системы. Я был в состоянии обойти эту проблему, изменив ssh2_exec
вызов
$stream = ssh2_exec($this->connection,"~/iptsave; sleep .5");
, но я обеспокоен тем, что что-то не так.
ли вы когда-нибудь получите ответ на свой вопрос? –