Je travaille sur un outil qui lit une configuration iptables à partir d'un hôte distant sur SSH2 en utilisant l'extension PECL SSH2. Je parviens à établir la connexion avec l'hôte, à m'authentifier et à exécuter des commandes. Le problème que j'ai est parfois le flux ne contient aucune donnée.Vide le contenu du flux PHP SSH2, même avec 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;
}
Environ 25% du temps, loadRules()
renvoie false, même lors de la connexion à locahost au lieu du système distant. J'ai pu contourner le problème en changeant l'appel ssh2_exec
à
$stream = ssh2_exec($this->connection,"~/iptsave; sleep .5");
mais je crains que quelque chose ne va pas.
Avez-vous jamais obtenir une réponse à votre question? –