Exemples d'Utilisation avec Expect
Exemple #1 Exemple d'Utilisation avec Expect
- <?php
- ini_set("expect.loguser", "Off");
- $stream = fopen("expect://ssh root@remotehost uptime", "r");
- $cases = array (
- array (0 => "password:", 1 => PASSWORD)
- );
- switch (expect_expectl ($stream, $cases)) {
- case PASSWORD:
- fwrite ($stream, "password\n");
- break;
- default:
- die ("Une erreur s'est produite lors de la connexion à l'hôte distant !\n");
- }
- while ($line = fgets($stream)) {
- print $line;
- }
- fclose ($stream);
- ?>
L'exemple suivant permet de se connecter à un hôte distant, détermine si le système d'exploitation distant est 32 ou 64 bits, puis, effectue une mise à jour d'un paquet spécifique.
Exemple #2 Autre exemple d'utilisation d'Expect
- <?php
- ini_set("expect.timeout", -1);
- ini_set("expect.loguser", "Off");
- $stream = expect_popen("ssh root@remotehost");
- while (true) {
- switch (expect_expectl ($stream, array (
- array ("password:", PASSWORD), // SSH demande un mot de passe
- array ("yes/no)?", YESNO), // SSH demande si l'on souhaite stocker l'hôte
- array ("~$ ", SHELL, EXP_EXACT), // Nous avons récupéré un shell !
- ))) {
- case PASSWORD:
- fwrite ($stream, "secret\n");
- break;
- case YESNO:
- fwrite ($stream, "yes\n");
- break;
- case SHELL:
- fwrite ($stream, "uname -a\n");
- while (true) {
- switch (expect_expectl ($stream, array (
- array ("~$ ", SHELL, EXP_EXACT), // Nous sommes dans le shell!
- array ("^Linux.*$", UNAME, EXP_REGEXP), // Affichage de la commande uname -a
- ), $match)) {
- case UNAME:
- $uname .= $match[0];
- break;
- case SHELL:
- // Exécution de la mise à jour :
- if (strstr ($uname, "x86_64")) {
- fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_64bit.rpm\n");
- } else {
- fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_32bit.rpm\n");
- }
- fwrite ($stream, "exit\n");
- break 2;
- case EXP_TIMEOUT:
- case EXP_EOF:
- break 2;
- default:
- die ("Une erreur est survenue !\n");
- }
- }
- break 2;
- case EXP_TIMEOUT:
- case EXP_EOF:
- break 2;
- default:
- die ("Une erreur est survenue !\n");
- }
- }
- fclose ($stream);
- ?>