NAME
Net::Appliance::Session::Cookbook::Recipe05 - Getting In To Enable Mode
NOTE
This Cookbook was contributed to the Net::Appliance::Session project by Nigel Bowden. Source code from the Cookbook is shipped in the examples
folder of this module's distribution.
PROBLEM
You want to login to a Cisco device and get in enable mode to perform some pivilege level 15 commands.
SOLUTION
Depending on the configuration of your Cisco device, there are a number of possible combinations that need to be catered for in terms of password/username combinations. Here is a table of (hopefully) the most common combinations that will be encountered when trying to Telnet/SSH to a Cisco device :
# Case Prompts Commands
1 Simple password-only login dropped Password: secret $session_obj->connect(Password=> 'secret');
straight in to priv 15 router# $session_obj->do_privileged_mode(0);
2 Username and password straight in Username: nigel $session_obj->connect(Name => 'nigel', Password=> 'secret');
to priv 15 Password: secret $session_obj->do_privileged_mode(0);
3 Password for login to priv level 1 Password: secret $session_obj->connect(Password=> 'secret');
followed by password for priv 15 router> enable $session_obj->begin_privileged( 'cisco' );
Password: cisco
router#
4 Username and password for priv Username: nigel $session_obj->connect(Name => 'nigel', Password=> 'secret');
level 1, followed by pwd for priv Password: secret $session_obj->begin_privileged( 'cisco' );
level 15 router> enable
Password: cisco
router#
5 Username and password for priv Username: nigel $session_obj->connect(Name => 'nigel', Password=> 'secret');
level 1, followed by same user Password: secret $session_obj->begin_privileged();
name & pwd for enable router> enable
Username: nigel
Password: secret
router#
6 Username and password for priv Username: nigel $session_obj->connect(Name => 'nigel', Password=> 'secret');
level 1, followed by different Password: secret $session_obj->begin_privileged( 'foo', 'bar');
username & pwd for enable router> enable
Username: foo
Password: bar
router#
DISCUSSION
The table above is (hopefully) largely self explantory and should serve as a useful lookup to adapt scripts to your particular environment.
However one point that needs some explanation potentially is the $session_obj->do_privileged_mode(0)
statement. This is used in the scenarios where the user is dropped straight in to enable mode (priv 15) upon logging in.
Net::Appliance::Session does some internal checking to see if you are already in enable mode before it will let you enter configure mode (using conf t
in IOS). Unless you use the $session_obj->do_privileged_mode(0)
statement to tell Net::Appliance::Session that we are already in enable mode (priv 15), it will raise an error when we try to go in to configure mode (using the $session_obj->begin_configure()
, which we haven't covered yet). So, it's best to let Net::Appliance::Session know we are in enable mode once we have logged in.
Finally, remember that unless you use the error handling recommended in the last recipe, your scripts will fail at the point that any unexpected reposnses are received during the login process.
SEE ALSO
AUTHOR
Nigel Bowden, with POD formatting by Oliver Gorwits.
COPYRIGHT & LICENSE
Copyright (c) Nigel Bowden 2007. All Rights Reserved.
You may distribute and/or modify this documentation under the same terms as Perl itself.