expect_expectl
expect_expectl
Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen
int **expect_expectl** resource $expect array $cases array $match
Waits until the output from a process matches one of the patterns, a specified time period has passed, or an is seen.
If is provided, then it is filled with the result of search.
The matched string can be found in .
The match substrings (according to the parentheses) in the original pattern can be found
in , , and so
on, up to (the limitation of libexpect).
match``match[0]``match[1]``match[2]``match[9]
expect
An Expect stream, previously opened with
.
expect_popen
casesAn array of expect cases. Each expect case is an indexed array,
as described in the following table:
Returns value associated with the pattern that was matched.
On failure this function returns: ,
or
EXP_EOFEXP_TIMEOUTEXP_FULLBUFFER
Voorbeeld: example
<?php
// Copies file from remote host:
ini_set("expect.timeout", 30);
$stream = fopen("expect://scp user@remotehost:/var/log/messages /home/user/messages.txt", "r");
$cases = array(
// array(pattern, value to return if pattern matched)
array("password:", "asked for password"),
array("yes/no)?", "asked for yes/no")
);
while (true) {
switch (expect_expectl($stream, $cases)) {
case "asked for password":
fwrite($stream, "my password\n");
break;
case "asked for yes/no":
fwrite($stream, "yes\n");
break;
case EXP_TIMEOUT:
case EXP_EOF:
break 2; // break both the switch statement and the while loop
default:
die("Error has occurred!");
}
}
fclose($stream);
?>
expect_popen