XXXV. Expect Functions

Introdução

This extension allows to interact with processes through PTY. You may consider using the expect:// wrapper with the filesystem functions which provide a simpler and more intuitive interface.

Dependências

This module uses the functions of the expect library. You need libexpect version >= 5.43.0.

Instalação

Esta estensão PECL não vem compilada com o PHP. Informações adicionais sobre novas versões, downloads, arquivos fontes, manutenções, e um Changelog, podem ser obtidos aqui: http://pecl.php.net/package/expect.

No PHP 4, os fontes desta estensão PECL podem ser encontrados no diretório ext/ ou dentro dos fontes do PHP ou no link PECL acima. In order to use these functions you must compile PHP with expect support by using the --with-expect[=DIR] configure option.

Windows users will enable php_expect.dll inside of php.ini in order to use these functions. No PHP esta DLL reside no diretório extensions/ junto aos binários do PHP para Windows. Você pode baixar esta estensão PECL como DLL a partir da página de downloads PHP ou em http://snaps.php.net/.

Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do php.ini.

In order to configure expect extension, there are configuration options in the configuration file php.ini.

Tabela 1. Expect Opções de Configuração

NomePadrãoModificávelChangelog
expect.timeout"10"PHP_INI_ALL 
expect.loguser"1"PHP_INI_ALL 
expect.logfile""PHP_INI_ALL 
Para mais detalhes e definições das constantes PHP_INI_*, veja a documentação de ini_set().

Breve descrição das diretivas de configuração.

expect.timeout integer

The timeout period for waiting for the data, when using the expect_expectl() function.

A value of "-1" disables a timeout from occurring.

Nota: A value of "0" causes the expect_expectl() function to return immediately.

expect.loguser boolean

Whether expect should send any output from the spawned process to stdout. Since interactive programs typically echo their input, this usually suffices to show both sides of the conversation.

expect.logfile string

Name of the file, where the output from the spawned process will be written. If this file doesn't exist, it will be created.

Nota: If this configuration is not empty, the output is written regardless of the value of expect.loguser.

Tipos Resource

Esta extensão não possui nenhum tipo resource.

Constantes pré-definidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

EXP_GLOB (integer)

Indicates that the pattern is a glob-style string pattern.

EXP_EXACT (integer)

Indicates that the pattern is an exact string.

EXP_REGEXP (integer)

Indicates that the pattern is a regexp-style string pattern.

EXP_EOF (integer)

Value, returned by expect_expectl(), when EOF is reached.

EXP_TIMEOUT (integer)

Value, returned by expect_expectl() upon timeout of seconds, specified in value of expect.timeout

EXP_FULLBUFFER (integer)

Value, returned by expect_expectl() if no pattern have been matched.

Exemplos

This example connects to the remote host via SSH, and prints the remote uptime.

Exemplo 1. Expect Usage Example

<?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 (
"Error was occurred while connecting to the remote host!\n");
}

while (
$line = fgets ($stream)) {
  print
$line;
}
fclose ($stream);
?>
Índice
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
expect_popen -- Exectute command via Bourne shell, and open the PTY stream to the process