Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
Detecting end of spawn output

Posted by gbromley (gbromley), 28 June 2007
Having trouble with a large output response from a router so switched from upping buffers/timeouts to reading in line by line, however the script gets caught I guess waiting for output from the router when now is coming

Script portion
expect "\n"
while {[regexp {\ } $expect_out(buffer)]} {
 if {[regexp {Internet} $expect_out(buffer)]} {
   # We have an IP to ARP mapping
   set line $expect_out(buffer)
   if {[regexp {Incomplete} $line]} {
     # Unfortunately its a dead one
   } else {
     # Its a live one, so remove the whitespace and comma delimit it
     regsub -all {[\ ]+} $line "," temp
     set output [split $temp {,}]
     set ipaddress [lindex $output 1]
     set macaddress [lindex $output 3]
     puts $ipaddress,$macaddress
   }
 }
 expect {
   "\n" { continue }
   default { break }
 }
}


Posted by gbromley (gbromley), 28 June 2007
Sorted it, last line of output is without a "\n" but does contain a cmd prompt > so I've adjusted the expect test to be:
 expect {
   "\n" { continue }
   ">" { break }
   default { break }
 }


Posted by admin (Graham Ellis), 28 June 2007
Welcome ... and glad you're sorted!

Graham



This page is a thread posted to the opentalk forum at www.opentalk.org.uk and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2012: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 899360 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho