grep output of expect script

12,980

You can capture the output and parse it within expect

#!/usr/bin/expect -f

# connect to vplexcli
spawn vplexcli
# Look for login prompt
expect -re "Name:"
# Send login
send "service\r"
# Look for password prompt
expect -re "Password:"
# Send password
send "letmein123\r"
expect -re "VPlexcli:/> "
send "ll /clusters/cluster-1/storage-elements/\r"
expect -re "(.*)VPlexcli:/> "

foreach line [split $expect_out(1,string) \n] {
    if {[string match *error* $line]} {
        puts $line
    }
}

send "exit\r"
expect eof
Share:
12,980

Related videos on Youtube

LVLAaron
Author by

LVLAaron

Updated on September 18, 2022

Comments

  • LVLAaron
    LVLAaron almost 2 years

    I'm trying to run some expect language, and grep/parse the output all in one script. I want to grep the output of and look for "error" (I should note that standard linux commands like awk, sed, grep, etc are not available on the remote VPlexcli machine)

    #!/bin/bash
    
    expect - << EOF
    # connect to vplexcli
    spawn vplexcli
    # Look for login prompt
    expect -re "Name:"
    # Send login
    send "service\r"
    # Look for password prompt
    expect -re "Password:"
    # Send password
    send "letmein123\r"
    expect -re "VPlexcli:/> "
    send "ll /clusters/cluster-1/storage-elements/\r"
    expect -re "VPlexcli:/> "
    send "exit\r"
    EOF
    

    Output looks like this:

    VPD83T3:6006016036c02c00e217465c0516e211  ok            APM00121002844.SPA  APM00121002844.SPB  both        0x002e000000000000  implicit-explicit
    VPD83T3:6006016036c02c00e4dc0671f907e211  ok            APM00121002844.SPA  APM00121002844.SPB  both        0x0010000000000000  implicit-explicit
    VPD83T3:6006016036c02c00ec79619bdd08e211  error         APM00121002844.SPA  APM00121002844.SPB  none                            implicit-explicit
    VPD83T3:6006016036c02c00f0bfd3dedd08e211  error         APM00121002844.SPA  APM00121002844.SPB  none                            implicit-explicit
    
    • Angel Todorov
      Angel Todorov over 11 years
      Please show some typical output from the expect program
    • angus
      angus over 11 years
      grep "error"... and then what? Note that you can expect the string "error" in your expect script, and exit with an error code if matched.
    • LVLAaron
      LVLAaron over 11 years
      I just want a list returned to me with items on the "error" lines. VPD83T3:6006016036c02c00f0bfd3dedd08e211