in reply to Perl Script to enable Cisco

What do you mean by "enable command"? Shell commands are supported by remote hosts, not Perl modules.

As for the text file, you may want to use print instead of say. The "?" character say adds is actually a newline symbol, \n. Under Windows newline symbol is different (\r\n), so you may print that instead.

Sorry if my advice was wrong.

Replies are listed 'Best First'.
Re^2: Perl Script to enable Cisco
by Null_Route0 (Initiate) on Jul 23, 2012 at 17:12 UTC
    Thanks for the clarification with /n What I mean by enable command is this... On a Cisco there is a whole subset of commands you can run from privileged mode. To do that you type the command "enable" and then are prompted for a password. Im just not sure how I go about scripting that out.

    I tried like this, but it didnt work

    ###run commands### $ssh->cmd("enable theEnablePassword");
    Tried like this too
    $ssh->cmd("enable"); $ssh->cmd("theEnablePassword");
    Not sure if I explained that right.

      Since it sounds like you'll need to your script to interactively respond to the remote device, I think that you need to use something like Expect.

      I personally have never used expect, so I can't offer up more details on how to use expect. Based on my limited knowledge of expect, I believe that it can be used to issue a command, what for a specific response, and then issue another command based on the response received.

        Ok I'll give it a try, Im pretty stumped right now.

        There is actually a module out there that does what I am trying to do called Net::Telnet::Cisco

        It supports an enable feature specific for Cisco $session->enable("enable_password")

        This would do the trick but the problem is our Ciscos are running SSH not Telnet so I am using Net::SSH::Perl which does not have the same enable option as N::T::C

        Is anyone aware of a way I could modify the NTC module to use SSH instead of telent?

      What do these commands return? I mean, what if you try to say $ssh->cmd("enable theEnablePassword");?
      Sorry if my advice was wrong.
        Heres the outout I get when I run the script, I tried adding the say but it produced the same results.

        Layer-2 Switch Line has invalid autocommand "show running-config"

        In order for me to execute the show run config I need to get the box into enabled mode. I copied the sequences below from the CLI of me running the commands manually. Hopefully it will help illustrate what I am trying to do.

        Switch-01>enable <--- Log on to box and type enable

        Password: <---prompts for password

        Switch-01#sho run <--- drops into privilege mode where I can run the show run command

        Building configuration...

        also I was able to get rid of the newline character by adding

        chomp ($filename);