[rancid] PHP creating a telnet session via Expect
ccusmith at aol.com
ccusmith at aol.com
Thu Jun 19 18:44:14 UTC 2008
I have a webpage that is in HTML and PHP. In PHP I have tried using exec, system, shell_exec and passthru functions to call an Expect Script file (temp.exp). This expects file spawns a telnet session that uses "expect/send" commands to retrieve information from an environmental unit (not a normal server). This data is placed in a file and then loaded to the webpage.
The problem is if I call "./temp.exp" it runs great, but when I call the same program from the webpage exec("./temp.exp") using PHP (because it retrieves the data is displayed in the webpage), it will connect but then stops responding. It never returns the password prompt to achieve a yes to move on.
I inserted “exp_internal 1” in the expect file to produce the diagnostic results.
When temp.exp is ran manually
spawn telnet 111.111.11.111
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {18790}
expect: does "" (spawn_id exp5) match glob pattern "Password:"? no
Trying 111.111.11.111...
Connected to 111.111.11.111.
Escape character is '^]'.
Password:
expect: does "Trying 111.111.11.111...\r\nConnected to 111.111.11.111.\r\nEscape character is '^]'.\r\nPassword: " (spawn_id exp5) match glob pattern "Password:"? yes
expect: set expect_out(0,string) "Password:"
expect: set expect_out(spawn_id) "exp5"
When temp.exp is called from the webpage
spawn telnet 111.111.11.111
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {19909}
expect: does "" (spawn_id exp19) match glob pattern "Password:"? no
Trying 111.111.11.111...
Connected to 111.111.11.111.
Escape character is '^]'.
expect: does "Trying 111.111.11.111...\r\nConnected to 111.111.11.111.\r\nEscape character is '^]'.\r\n" (spawn_id exp19) match glob pattern "Password:"? no
expect: timed out
I have checked/changed the Apache user, the permissions and ownership of the files are fine. I have put debug on the expect and the telnet sessions. I have specified the telnet used and the port. I have upgraded my Tcl/Tk. The link http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2005-06/0454.html is similar but I am not getting the "setsocket(SO_DEBUG):Permission denied" error and that solution did not work for me.
System info
# find / -name telnet
/usr/bin/telnet
/usr/ucb/telnet
# expect -v
expect version 5.40.0
Below are versions that I have tried.
The script 1
#!/usr/local/bin/expect
exp_internal -f /opt/xampp/htdocs/temp/diag.txt 1
spawn -nottycopy /bin/telnet -d 111.11.11.111 23
sleep 3
expect "Password:"
send "OMNI\r"
expect "X. Exit (end connection)"
send "p\r"
expect ">"
log_file -noappend -a "/opt/xampp/htdocs/temp/data.txt"
#Sensor Name POS3 Temp Sensor 1
send "GET 3052.5.1.1.1.1.4.3.1.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.4.3.1.1"
#Read Out POS3 Temp Sensor 1
send "GET 3052.5.1.1.1.1.6.3.1.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.6.3.1.1"
#Read Out POS3 Humidity Sensor 2
send "GET 3052.5.1.1.1.1.6.3.3.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.6.3.3.1"
log_file
send "BYE\r"
exit 0
The script 2
#!/usr/local/bin/expect -f
exp_internal -f /opt/xampp/htdocs/temp/diag.txt 1
set force_conservative 1 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set timeout 3
spawn $env(SHELL)
match_max 100000
send -- "telnet 111.11.11.111\r"
expect "Password: "
send -- "OMNI\r"
expect "X. Exit (end connection)"
send -- "p\r"
expect ">"
log_file -noappend -a "/opt/xampp/htdocs/temp/data.txt"
#Sensor Name POS3 Temp Sensor 1
send -- "GET 3052.5.1.1.1.1.4.3.1.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.4.3.1.1"
#Read Out POS3 Temp Sensor 1
send -- "GET 3052.5.1.1.1.1.6.3.1.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.6.3.1.1"
#Read Out POS3 Humidity Sensor 2
send -- "GET 3052.5.1.1.1.1.6.3.3.1\r"
sleep 3
expect "1.3.6.1.4.1.3052.5.1.1.1.1.6.3.3.1"
log_file
send -- "BYE\r"
exit 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.shrubbery.net/pipermail/rancid-discuss/attachments/20080619/0595f3a7/attachment.html
More information about the Rancid-discuss
mailing list