in reply to Re: Compiler cl?
in thread Compiler cl?

Damn! I was going to run it on Windows but I guess I can run it on Solaris. The thing is as of now I have a 500 line script that automates software upgrades on a piece of network gear I work with. I originally wrote this script using the telnet.pm to create and direct the session from a work station to the node. However I need a way (like expect) to issue a command and wait for a response before continueing. I accomplished this also by using the Telnet module due to the "waitfor" function in this module.

This function seems a little buggy though which is why I wanted to rewrite it using the expect module. The waitfor command does not wait for some system responses before continueing therefore screwing up the entire process from there on out.

Is there any way I can embedd true TCL/Expect in a perl script or maybe just write this section of the script in Expect and call it with the perl script when I get there?

Can anyone think of any better ways to accomplish this?

Replies are listed 'Best First'.
Re: Re: Re: Compiler cl?
by flyingmoose (Priest) on Jan 30, 2004 at 00:33 UTC
    However I need a way (like expect) to issue a command and wait for a response before continueing. I accomplished this also by using the Telnet module due to the "waitfor" function in this module.
    If you don't background your system call (aka fork and exec), it should be synchronous -- waiting is automatic. I am unfamilar with your telnet module, but this is the way it should work, and the way the SSH version *does* work. So essentially you want to make sure your apps can run in non-interactive mode so they don't need input while running. Am I missing something?
      Well yes you are missing something mainly because I have not stated it yet. On some of the commands the node returns text (somewhat of a status report or verbose mode if you will) of what is going on. The script sees this as a valid returned status and continues with the next command although the response sent from the node is not a command prompt (meaning it is ready for another command).

      And in some cases no it does not even wait for a command prompt when no input is being sent back to the screen. For instance when I telnet in ( running OS is VXWorks ) and issue a command to oh say copy a file from one directory to another this command takes a while to execute. If I have 2 or 3 commands in a row in the script after the first copy command is issued and the system is in the process of copying the file the script sends the next command before the node is done processing the first command therefore the following commands are ignored and never accomplished.

      Does that make a little more since? I know it is a bit confusing but I really cannot explain better without posting the code and the output from the node.