PHP.nl

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