PHP 8.4.0 RC3 available for testing

expect_expectl

(PECL expect >= 0.1.0)

expect_expectlEspera até que a saída de um processo corresponda a um dos padrões, um período de tempo especificado tenha passado ou um EOF seja alcançado

Descrição

expect_expectl(resource $expect, array $cases, array &$match = ?): int

Espera até que a saída de um processo corresponda a um dos padrões, um período de tempo especificado tenha passado ou um EOF seja alcançado.

Se match for fornecido, então ele será preenchido com o resultado da pesquisa. A string correspondente pode ser encontrada em match[0]. As substrings de correspondência (de acordo com os parênteses) no padrão original podem ser encontradas em match[1], match[2] e assim por diante, até match[9] (a limitação do libexpect).

Parâmetros

expect

Um fluxo Expect, previamente aberto com expect_popen().

cases

Um array de casos Expect. Cada caso é um array indexado, como descrito na tabela a seguir:

Array de Casos Expect
Chave do Índice Tipo do Valor Descrição Mandatório Valor Padrão
0 string padrão que será comparado com a saída do fluxo sim  
1 mixed valor que será retornado por esta função se o padrão for correspondido sim  
2 inteiro tipo do padrão, uma das opções: EXP_GLOB, EXP_EXACT ou EXP_REGEXP não EXP_GLOB

Valor Retornado

Retorna o valor associado com o padrão que foi correspondido.

Em caso de falha, esta função retorna: EXP_EOF, EXP_TIMEOUT ou EXP_FULLBUFFER

Registro de Alterações

Versão Descrição
PECL expect 0.2.1 Antes da versão 0.2.1, uma string de correspondência era retornada no parâmetro match, e não um array de substrings correspondidas.

Exemplos

Exemplo #1 Exemplo de expect_expectl()

<?php
// Copia arquivo do servidor remoto:
ini_set("expect.timeout", 30);

$stream = fopen("expect://scp user@remotehost:/var/log/messages /home/user/messages.txt", "r");

$cases = array(
// array(padrão, valor a retornar se houver correspondência)
array("senha:", "pediu senha"),
array(
"sim/não)?", "perguntou sim ou não")
);

while (
true) {
switch (
expect_expectl($stream, $cases)) {
case
"pediu senha":
fwrite($stream, "minha senha\n");
break;
case
"perguntou sim ou não":
fwrite($stream, "sim\n");
break;
case
EXP_TIMEOUT:
case
EXP_EOF:
break
2; // sai do switch e do while
default:
die(
"Ocorreu um erro!");
}
}

fclose($stream);
?>

Veja Também

  • expect_popen() - Executa comando via Bourne shell, e abre o fluxo PTY para o processo

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top