Bon le sujet à l'air un tantinet compliquéalors je vais vous expliquer en détail.
Premièrement, depuis peu, les serveurs de OVH en Gentoo release 2 ont réimplenté la règle 'on a pas le droit de faire la commande emerge' ce qui pourrait ('Ô mon dieu') casser leur configurationBref, du coup, quand mon script php connecté en SSH à mon serveur VPS tente un emerge de quoi que ce soit, il boucle infini, puisque la commande lui demande si on veut continuer ou non.
Jusque là ca va encore! Ensuite, j'ai donc appris qu'un fwrite suffisait à lui transmettre ce 'y' tant attendu qui execute la commande (bon quand on voit comment réagi emerge on à pas vraiment envie de dire qu'elle s'exécute mais on est pas la pour troller
) On en arrive donc à atteindre le sujet du post, auriez vous l'extrême obligeance de voir mon code de me dire pourquoi quand j'active stream_set_blocking($stream, true), il part en boucle infinie (alors que sans il marche mais impossible de savoir si la commande a bien finie de s'exécuter
).
Voila mon code
Je suis légèrement désespéré...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 $server_ip = '46.105.XXX.XXX'; $login = 'xxxxx'; $pwd = 'xxxxx'; echo 'Connexion...'; $connect = ssh2_connect($server_ip,22); if (!$connect) { echo '<br><span style="color:red;">----Connexion échouée</span>'; die; }; echo '<span style="color:green;"> réussie</span><br>'; echo 'Authentification...'; if (!ssh2_auth_password($connect,$login,$pwd)) { echo '<span style="color:red;">----Authentification échouée</span>'; }; echo '<span style="color:green;"> réussie</span><br><hr>'; $stream = ssh2_exec($connect,'emerge --unmerge bind'); // Lecture du premier caractère (initie la lecture) $return = stream_get_contents($stream,1); var_dump($return); $return = stream_get_contents($stream); var_dump($return); // En cas de demande de confirmation if (preg_match('#([yon])[\-\\\/\|]([yon])#', $return, $match)) { if (in_array($match[1].$match[2], array('yn','ny'))) { fwrite ($stream, 'y'); } else if (in_array($match[1].$match[2], array('on','no'))) { fwrite ($stream, 'o'); } } //stream_set_blocking($stream, true); $return = stream_get_contents($stream); var_dump($return);![]()
Partager