expect telnet unexpected delays


 
Thread Tools Search this Thread
Special Forums UNIX and Linux Applications Infrastructure Monitoring expect telnet unexpected delays
# 1  
Old 05-12-2009
expect telnet unexpected delays

I must automatically monitor and manage a large number of boxes on our network.

I have been using perl/Net::Telnet and expect/telnet and also perl/ssh and expect/ssh to reach the command line of the remote boxes. Scripts are working but slow.

(Yes, I do use SNMP also but many boxes do not speak SNMP)

I believe that there is some protocol or terminal negotiating that I may be ignoring that blocks when the remote box sends a query and I do not respond.

I tried to read the RFC on Telnet which appeared to have an infinite number of options. My application is very simple: get to the remote command line.

Here is an example of expect/ssh (telnet exactly the same result) that includes unexpected data then the remote blocks for 10 seconds (local or remote default timeout?) then continues with expected response.
Code:
expect: set expect_out(buffer) "admin@10.100.72.223's password:"
send: sending "xxxxx\r" to { exp4 }
(logo deleted)
  MikroTik RouterOS 3.20 (c) 1999-2009       http://www.mikrotik.com/

  ^[[?62;9;c^[[39;3Rexpect: timed out

expect: does " \r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\r\n\r\n\r  MMM      MMM     
(expected data deleted)
   MikroTik RouterOS 3.20 (c) 1999-2009       http://www.mikrotik.com/\r\n\r\r\n\r
\u001b[9999B\r\u001b[9999B\u001bZ  \u001b[6n" (spawn_id exp4) match glob 
pattern " > "? no

You see I was looking for the prompt, " > ", which does appear 10 seconds later!

Part does appear to be a terminal command. I have to guess the remote box is asking me a question and I am failing to answer.

Surprising is that using ssh rather than Telnet gives the same results.
Manual use of ssh or Telnet = no delays.
Script use of ssh or Telnet = 10 second delays for each send/expect cycle!

Can some one give me a clue???
# 2  
Old 05-12-2009
10 seconds is the standard delay for expect. You tell expect to expect something, so expect waits 10 seconds. If it doesn't see it in 10 seconds, it goes to the next line.

That bit of code you posted doesn't make sense to me.
To me it should look like:
Code:
 expect password:
send xxxxxxx\r
expect ">"

# 3  
Old 05-13-2009
[quote=System Shock;302315605]10 seconds is the standard delay for expect. You tell expect to expect something, so expect waits 10 seconds. If it doesn't see it in 10 seconds, it goes to the next line.

That bit of code you posted doesn't make sense to me.
----------------------------------------------------------------------
Thanks rapid response.
I should have been more clear: I posted the log output NOT the script!
Used the code flag to preserve format.

I think you are saying expect always waits the full timeout period!

If this is the case then I still have a problem. I am dealing with thousands of boxes and unless I go to parallel processing I will never get around to all the boxes! Most respond in a second or so but some can take a few seconds if busy. So how do I set my timeout??? If I leave it at the default then that is 10,000 x n seconds where n is the number of send/expect cycles!

I was expecting that the remote box would respond to a command and expect would continue to the next operation immediately upon receipt of the expected response! But I do not see the expected response in the log file until after the timeout has occurred.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

expect telnet script execute by cronjob

hi, please help, keep getting this bolded error and look it up and people say its your environment variable though i tried to set it manually in expect..it run fine if i run it manually but once i run it by cronjob it error below..i tried to comment out ip/login info with *.. logfile:: START... (0 Replies)
Discussion started by: cssanangeles
0 Replies

2. Shell Programming and Scripting

Calling Expect Script - Telnet

Hi All, I have an Expect script which logs into Cisco switch, performs a show interface command. I want to read a file of ip addresses which will be passed to the expect script. The script to read the file works, the expect script works on it's own but when i call the 'expect' script from the... (12 Replies)
Discussion started by: trinak96
12 Replies

3. Shell Programming and Scripting

Expect/telnet/testing tacacs on a cisco

At times I find the need to test that the tacacs port 49 is open. The code below works but is painfully slow because I have to wait on the timeouts. Examples of possible responds router1#telnet 10.11.20.14 49 Trying 206.112.204.140, 49 ... Open route1#telnet 10.11.19.14 49 Trying... (1 Reply)
Discussion started by: popeye
1 Replies

4. Shell Programming and Scripting

expect: redirect telnet to file

I've got some expect/tcl scripts. Now i want to add a function that allows to open a telnet connection and redirect the output to a logfile. On the shell/terminal i tried something like: 'telnet 192.168.123.123 12121 > /home/user/logging/log-telnet.log' and the telnet is redirected into the... (2 Replies)
Discussion started by: JaPatton
2 Replies

5. Shell Programming and Scripting

Help needed with expect...(If telnet fails)

Hello I'm working using expect to automate telnet commands...i want to check if telnet fails and in this case...certain message should appear or certain word should be out in a file). Thses are the messages that apeear if telnet fails: Trying 172.16.3.115... telnet: Unable to connect... (0 Replies)
Discussion started by: Hossam_Nox
0 Replies

6. Shell Programming and Scripting

telnet commands using expect

Hi All, I am trying to write a expect script to telnet and run a command on a remote host.The command i want to send contains a text value is contained in file.txt in the linux box from where i am running the expect script.I want to pass the contains of file.txt into a variable and call the... (1 Reply)
Discussion started by: pistachio
1 Replies

7. Shell Programming and Scripting

Telnet Expect script question

Hi all, I have written a small expect script which should spawn a telnet session login and execute some commands. #!/usr/bin/expect -f spawn telnet $env(IP) match_max 100000 expect "login:" send -- "******\n" expect -exact "Password:" send -- "****\n" expect "%" Now I have got... (2 Replies)
Discussion started by: stinkefisch
2 Replies

8. Shell Programming and Scripting

Need 'expect' help, ssh/telnet and trapping

So here is what I am trying to do. I have a large # of switches and routers I am trying to log into. Unfortunately some have ssh only, some have telnet only. and some i have never logged into with ssh. I first want it to SSH, if i have never logged into the box it will ask for adding the ssh key. I... (0 Replies)
Discussion started by: ippy98
0 Replies

9. Shell Programming and Scripting

Webpage to Telnet via Perl and Expect: Telnet problem?

Somewhat long story: I have a simple Perl CGI script that uses Expect to Telnet to a device and grab some data, and then spits it back to Perl for display on the Webpage. This works for many devices I've tried, but one device just fails, it keeps rejecting the password on this device, only... (1 Reply)
Discussion started by: jondo
1 Replies

10. Shell Programming and Scripting

Unexpected Results (at least I did not expect them)

I have two sripts running in bash. The first one uncompresses log files and moves them to a working directory using uncompress -c and > output to new directory. It then creates one control record to assure our search returns a record. It then calls or executes the second script, which is a grep for... (6 Replies)
Discussion started by: altamaha
6 Replies
Login or Register to Ask a Question