PHP Portal » PHP Handbuch » Expect Usage Examples

Werbung

Expect Usage Examples


The following example connects to the remote host, determines whether installed OS is for 32 or 64 bit, then runs update for specific package.

Beispiel #2 Another Expect Usage Example

PHP Code
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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 is asking for password array("yes/no)?", YESNO), // SSH is asking whether to store the host entry array("~$ ", SHELL, EXP_EXACT), // We've got the 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), // We've got the shell! array("^Linux.*$", UNAME, EXP_REGEXP), // uname -a output ), $match)) { case UNAME: $uname .= $match[0]; break; case SHELL: // Run update: 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("Error has occurred!\n"); } } break 2; case EXP_TIMEOUT: case EXP_EOF: break 2; default: die("Error has occurred!\n"); } } fclose($stream);