expect-php-examples-usage-1

  • Examples
  • Expect Usage Examples

  • Expect Usage Examples
  • Expect Usage Examples

    Expect Usage Examples

    Example #1 Expect Usage Example

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

    <?php
    ini_set
    ("expect.loguser""Off");

    $stream fopen("expect://ssh root@remotehost uptime""r");

    $cases = array (
        array (
    => "password:"=> 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);
    ?>

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

    Example #2 Another Expect Usage Example

    <?php
    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 ("~$ "SHELLEXP_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 (
    "~$ "SHELLEXP_EXACT), // We've got the shell!
                                
    array ("^Linux.*$"UNAMEEXP_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);
    ?>