@@ -1,3 +1,15 @@
+4.200000 2015-01-06
+
+ * Migrate away from Dist::Zilla
+
+4.142720 2014-09-29 19:44:29 Europe/London
+
+ * Docs update for Cisco NX-OS which has max terminal of 511
+
+4.140230 2014-01-23 20:48:04 Europe/London
+
+ * [RT#92376] timeout when incorrect privileged password
+
4.131260 2013-05-06 20:36:23 Europe/London
* Minor fix for incorrect data type on timeout
@@ -1,379 +0,0 @@
-This software is copyright (c) 2013 by Oliver Gorwits.
-
-This is free software; you can redistribute it and/or modify it under
-the same terms as the Perl 5 programming language system itself.
-
-Terms of the Perl programming language system itself
-
-a) the GNU General Public License as published by the Free
- Software Foundation; either version 1, or (at your option) any
- later version, or
-b) the "Artistic License"
-
---- The GNU General Public License, Version 1, February 1989 ---
-
-This software is Copyright (c) 2013 by Oliver Gorwits.
-
-This is free software, licensed under:
-
- The GNU General Public License, Version 1, February 1989
-
- GNU GENERAL PUBLIC LICENSE
- Version 1, February 1989
-
- Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The license agreements of most software companies try to keep users
-at the mercy of those companies. By contrast, our General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. The
-General Public License applies to the Free Software Foundation's
-software and to any other program whose authors commit to using it.
-You can use it for your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Specifically, the General Public License is designed to make
-sure that you have the freedom to give away or sell copies of free
-software, that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free
-programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of a such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must tell them their rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any program or other work which
-contains a notice placed by the copyright holder saying it may be
-distributed under the terms of this General Public License. The
-"Program", below, refers to any such program or work, and a "work based
-on the Program" means either the Program or any work containing the
-Program or a portion of it, either verbatim or with modifications. Each
-licensee is addressed as "you".
-
- 1. You may copy and distribute verbatim copies of the Program's source
-code as you receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice and
-disclaimer of warranty; keep intact all the notices that refer to this
-General Public License and to the absence of any warranty; and give any
-other recipients of the Program a copy of this General Public License
-along with the Program. You may charge a fee for the physical act of
-transferring a copy.
-
- 2. You may modify your copy or copies of the Program or any portion of
-it, and copy and distribute such modifications under the terms of Paragraph
-1 above, provided that you also do the following:
-
- a) cause the modified files to carry prominent notices stating that
- you changed the files and the date of any change; and
-
- b) cause the whole of any work that you distribute or publish, that
- in whole or in part contains the Program or any part thereof, either
- with or without modifications, to be licensed at no charge to all
- third parties under the terms of this General Public License (except
- that you may choose to grant warranty protection to some or all
- third parties, at your option).
-
- c) If the modified program normally reads commands interactively when
- run, you must cause it, when started running for such interactive use
- in the simplest and most usual way, to print or display an
- announcement including an appropriate copyright notice and a notice
- that there is no warranty (or else, saying that you provide a
- warranty) and that users may redistribute the program under these
- conditions, and telling the user how to view a copy of this General
- Public License.
-
- d) You may charge a fee for the physical act of transferring a
- copy, and you may at your option offer warranty protection in
- exchange for a fee.
-
-Mere aggregation of another independent work with the Program (or its
-derivative) on a volume of a storage or distribution medium does not bring
-the other work under the scope of these terms.
-
- 3. You may copy and distribute the Program (or a portion or derivative of
-it, under Paragraph 2) in object code or executable form under the terms of
-Paragraphs 1 and 2 above provided that you also do one of the following:
-
- a) accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- b) accompany it with a written offer, valid for at least three
- years, to give any third party free (except for a nominal charge
- for the cost of distribution) a complete machine-readable copy of the
- corresponding source code, to be distributed under the terms of
- Paragraphs 1 and 2 above; or,
-
- c) accompany it with the information you received as to where the
- corresponding source code may be obtained. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form alone.)
-
-Source code for a work means the preferred form of the work for making
-modifications to it. For an executable file, complete source code means
-all the source code for all modules it contains; but, as a special
-exception, it need not include source code for modules which are standard
-libraries that accompany the operating system on which the executable
-file runs, or for standard header files or definitions files that
-accompany that operating system.
-
- 4. You may not copy, modify, sublicense, distribute or transfer the
-Program except as expressly provided under this General Public License.
-Any attempt otherwise to copy, modify, sublicense, distribute or transfer
-the Program is void, and will automatically terminate your rights to use
-the Program under this License. However, parties who have received
-copies, or rights to use copies, from you under this General Public
-License will not have their licenses terminated so long as such parties
-remain in full compliance.
-
- 5. By copying, distributing or modifying the Program (or any work based
-on the Program) you indicate your acceptance of this license to do so,
-and all its terms and conditions.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the original
-licensor to copy, distribute or modify the Program subject to these
-terms and conditions. You may not impose any further restrictions on the
-recipients' exercise of the rights granted herein.
-
- 7. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of the license which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-the license, you may choose any version ever published by the Free Software
-Foundation.
-
- 8. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Appendix: How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to humanity, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
- To do so, attach the following notices to the program. It is safest to
-attach them to the start of each source file to most effectively convey
-the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19xx name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License. Of course, the
-commands you use may be called something other than `show w' and `show
-c'; they could even be mouse-clicks or menu items--whatever suits your
-program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- program `Gnomovision' (a program to direct compilers to make passes
- at assemblers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
---- The Artistic License 1.0 ---
-
-This software is Copyright (c) 2013 by Oliver Gorwits.
-
-This is free software, licensed under:
-
- The Artistic License 1.0
-
-The Artistic License
-
-Preamble
-
-The intent of this document is to state the conditions under which a Package
-may be copied, such that the Copyright Holder maintains some semblance of
-artistic control over the development of the package, while giving the users of
-the package the right to use and distribute the Package in a more-or-less
-customary fashion, plus the right to make reasonable modifications.
-
-Definitions:
-
- - "Package" refers to the collection of files distributed by the Copyright
- Holder, and derivatives of that collection of files created through
- textual modification.
- - "Standard Version" refers to such a Package if it has not been modified,
- or has been modified in accordance with the wishes of the Copyright
- Holder.
- - "Copyright Holder" is whoever is named in the copyright or copyrights for
- the package.
- - "You" is you, if you're thinking about copying or distributing this Package.
- - "Reasonable copying fee" is whatever you can justify on the basis of media
- cost, duplication charges, time of people involved, and so on. (You will
- not be required to justify it to the Copyright Holder, but only to the
- computing community at large as a market that must bear the fee.)
- - "Freely Available" means that no fee is charged for the item itself, though
- there may be fees involved in handling the item. It also means that
- recipients of the item may redistribute it under the same conditions they
- received it.
-
-1. You may make and give away verbatim copies of the source form of the
-Standard Version of this Package without restriction, provided that you
-duplicate all of the original copyright notices and associated disclaimers.
-
-2. You may apply bug fixes, portability fixes and other modifications derived
-from the Public Domain or from the Copyright Holder. A Package modified in such
-a way shall still be considered the Standard Version.
-
-3. You may otherwise modify your copy of this Package in any way, provided that
-you insert a prominent notice in each changed file stating how and when you
-changed that file, and provided that you do at least ONE of the following:
-
- a) place your modifications in the Public Domain or otherwise make them
- Freely Available, such as by posting said modifications to Usenet or an
- equivalent medium, or placing the modifications on a major archive site
- such as ftp.uu.net, or by allowing the Copyright Holder to include your
- modifications in the Standard Version of the Package.
-
- b) use the modified Package only within your corporation or organization.
-
- c) rename any non-standard executables so the names do not conflict with
- standard executables, which must also be provided, and provide a separate
- manual page for each non-standard executable that clearly documents how it
- differs from the Standard Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-4. You may distribute the programs of this Package in object code or executable
-form, provided that you do at least ONE of the following:
-
- a) distribute a Standard Version of the executables and library files,
- together with instructions (in the manual page or equivalent) on where to
- get the Standard Version.
-
- b) accompany the distribution with the machine-readable source of the Package
- with your modifications.
-
- c) accompany any non-standard executables with their corresponding Standard
- Version executables, giving the non-standard executables non-standard
- names, and clearly documenting the differences in manual pages (or
- equivalent), together with instructions on where to get the Standard
- Version.
-
- d) make other distribution arrangements with the Copyright Holder.
-
-5. You may charge a reasonable copying fee for any distribution of this
-Package. You may charge any fee you choose for support of this Package. You
-may not charge a fee for this Package itself. However, you may distribute this
-Package in aggregate with other (possibly commercial) programs as part of a
-larger (possibly commercial) software distribution provided that you do not
-advertise this Package as a product of your own.
-
-6. The scripts and library files supplied as input to or produced as output
-from the programs of this Package do not automatically fall under the copyright
-of this Package, but belong to whomever generated them, and may be sold
-commercially, and may be aggregated with this Package.
-
-7. C or perl subroutines supplied by you and linked into this Package shall not
-be considered part of this Package.
-
-8. The name of the Copyright Holder may not be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
-MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
-The End
-
@@ -1,17 +1,14 @@
-Changes
-LICENSE
-MANIFEST
-META.json
-META.yml
-Makefile.PL
-README
bin/nas
+Changes
examples/example-1.pl
lib/Net/Appliance/Session.pm
lib/Net/Appliance/Session/Async.pm
lib/Net/Appliance/Session/Engine.pm
lib/Net/Appliance/Session/Scripting.pm
lib/Net/Appliance/Session/Transport.pm
+Makefile.PL
+MANIFEST This list of files
+META.yml
t/10-use.t
t/author-10_route_server.t
t/author-12_route_server_nonblock.t
@@ -22,3 +19,4 @@ t/author-31_local_device_ssh_extra.t
t/author-32_sdf_shell.t
t/author-41_ssh_unknown_host.t
t/author-42_ssh_fail_close.t
+META.json Module JSON meta-data (added by MakeMaker)
@@ -3,8 +3,8 @@
"author" : [
"Oliver Gorwits <oliver@cpan.org>"
],
- "dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 4.300024, CPAN::Meta::Converter version 2.120921",
+ "dynamic_config" : 1,
+ "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.120921",
"license" : [
"perl_5"
],
@@ -13,7 +13,18 @@
"version" : "2"
},
"name" : "Net-Appliance-Session",
+ "no_index" : {
+ "directory" : [
+ "t",
+ "inc"
+ ]
+ },
"prereqs" : {
+ "build" : {
+ "requires" : {
+ "Test::More" : "0.88"
+ }
+ },
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "6.30"
@@ -29,7 +40,7 @@
"Moo" : "0",
"Moo::Role" : "0",
"MooX::Types::MooseLike::Base" : "0",
- "Net::CLI::Interact" : "2.131260",
+ "Net::CLI::Interact" : "2.200000",
"Sub::Quote" : "0",
"Term::ANSIColor" : "0",
"Term::ReadPassword" : "0",
@@ -39,25 +50,8 @@
"strict" : "0",
"warnings" : "0"
}
- },
- "test" : {
- "requires" : {
- "Test::More" : "0.88"
- }
}
},
"release_status" : "stable",
- "resources" : {
- "bugtracker" : {
- "web" : "https://rt.cpan.org/Public/Dist/Display.html?Name=Net-Appliance-Session"
- },
- "homepage" : "https://github.com/ollyg/Net-Appliance-Session/wiki",
- "repository" : {
- "type" : "git",
- "url" : "git://github.com/ollyg/Net-Appliance-Session.git",
- "web" : "https://github.com/ollyg/Net-Appliance-Session"
- }
- },
- "version" : "4.131260"
+ "version" : "4.200000"
}
-
@@ -6,13 +6,17 @@ build_requires:
Test::More: 0.88
configure_requires:
ExtUtils::MakeMaker: 6.30
-dynamic_config: 0
-generated_by: 'Dist::Zilla version 4.300024, CPAN::Meta::Converter version 2.120921'
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.120921'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: Net-Appliance-Session
+no_index:
+ directory:
+ - t
+ - inc
requires:
Cwd: 0
Data::Dumper: 0
@@ -22,7 +26,7 @@ requires:
Moo: 0
Moo::Role: 0
MooX::Types::MooseLike::Base: 0
- Net::CLI::Interact: 2.131260
+ Net::CLI::Interact: 2.200000
Sub::Quote: 0
Term::ANSIColor: 0
Term::ReadPassword: 0
@@ -31,8 +35,4 @@ requires:
Try::Tiny: 0
strict: 0
warnings: 0
-resources:
- bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=Net-Appliance-Session
- homepage: https://github.com/ollyg/Net-Appliance-Session/wiki
- repository: git://github.com/ollyg/Net-Appliance-Session.git
-version: 4.131260
+version: 4.200000
@@ -32,7 +32,7 @@ my %WriteMakefileArgs = (
"Moo" => 0,
"Moo::Role" => 0,
"MooX::Types::MooseLike::Base" => 0,
- "Net::CLI::Interact" => "2.131260",
+ "Net::CLI::Interact" => "2.200000",
"Sub::Quote" => 0,
"Term::ANSIColor" => 0,
"Term::ReadPassword" => 0,
@@ -42,7 +42,7 @@ my %WriteMakefileArgs = (
"strict" => 0,
"warnings" => 0
},
- "VERSION" => "4.131260",
+ "VERSION" => "4.200000",
"test" => {
"TESTS" => "t/*.t"
}
@@ -1,337 +0,0 @@
-NAME
- Net::Appliance::Session - Run command-line sessions to network
- appliances
-
-VERSION
- version 4.131260
-
-SYNOPSIS
- use Net::Appliance::Session;
-
- my $s = Net::Appliance::Session->new({
- personality => 'ios',
- transport => 'SSH',
- host => 'hostname.example',
- privileged_paging => 1, # only if using ASA/PIX OS 7+
- # and there are other behaviour options, see below
- });
-
- try {
- $s->connect({ username => 'username', password => 'loginpass' });
-
- $s->begin_privileged({ password => 'privilegedpass' });
- print $s->cmd('show access-list');
- $s->end_privileged;
- }
- catch {
- warn "failed to execute command: $_";
- }
- finally {
- $s->close;
- };
-
- or, try the bundled "nas" helper script (beta feature!):
-
- nas --help
-
-DESCRIPTION
- Use this module to establish an interactive command-line session with a
- network appliance. There is special support for moving into "privileged"
- mode and "configure" mode, along with the ability to send commands to
- the connected device and retrieve returned output.
-
- There are other CPAN modules that cover similar ground, but they are
- less robust and do not handle native SSH, Telnet and Serial Line
- connections with a single interface on both Unix and Windows platforms.
-
- Built-in commands come from a phrasebook which supports many network
- device vendors (Cisco, HP, etc) or you can install a new phrasebook.
- Most phases of the connection are configurable for different device
- behaviours.
-
-METHODS
- As in the synopsis above, the first step is to create a new instance.
-
- Recommended practice is to wrap all other calls (except "close()") in a
- "try" block, to catch errors (typically time-outs waiting for CLI
- response). This module exports the "try/catch/finally" methods (from
- Try::Tiny) into your namespace as a simpler alternative to using
- "eval()".
-
- For a full demonstration of usage, see the example script shipped with
- this distribution.
-
- Net::Appliance::Session->new( \%options )
- my $s = Net::Appliance::Session->new({
- personality => 'ios',
- transport => 'SSH',
- host => 'hostname.example',
- });
-
- Prepares a new session for you, but will not connect to any device. Some
- options are required, others optional:
-
- "personality => $name" (required)
- Tells the module which "language" to use when talking to the
- connected device, for example "ios" for Cisco IOS devices. There's a
- list of all the supported platforms in the Phrasebook documentation.
- It's also possible to write new phrasebooks.
-
- "transport => $backend" (required)
- The name of the transport backend used for the session, which may be
- one of Telnet, SSH, or Serial.
-
- "app => $location" (required on Windows)
- On Windows platforms, you must download the "plink.exe" program, and
- pass its location in this parameter.
-
- "host => $hostname" (required for Telnet and SSH transports)
- When using the Telnet and SSH transports, you must provide the IP or
- host name of the target device in this parameter.
-
- "timeout => $seconds"
- Configures a global default timeout value, in seconds, for
- interaction with the remote device. The default is 10 seconds. You
- can also set timeout on a per-command or per-macro call (see below).
-
- "connect_options => \%options"
- Some of the transport backends can take their own options. For
- example with a serial line connection you might specify the port
- speed, etc. See the respective manual pages for each transport
- backend for further details (SSH, Telnet, Serial).
-
- "add_library => $directory"
- If you've added to the built-in phrasebook with your own macros,
- then use this option to load your new phrasebook file(s). The path
- here should be the directory within which all your personalities are
- located, such as:
-
- ${directory}/cisco/ios/pb
- ${directory}/other/device/pb
-
- Usually the phrasebook files are called ""pb"" and to the
- "personality" option you pass the containing directory name, for
- example "ios" or "device" in the examples shown. See
- Net::CLI::Interact::Manual::Tutorial for further details.
-
- "nci_options => \%options"
- Should you wish to reconfigure the Net::CLI::Interact instance used
- inside of "Net::Appliance::Session", perhaps for an option not
- supported above, this generic setting is available.
-
- connect( \%options )
- $s->connect({ username => $myname, password => $mysecret });
-
- To establish a connection to the device, and possibly also log in, call
- this method. Following a successful connection, paging of device output
- will be disabled using commands appropriate to the platform. This
- feature can be suppressed (see "CONFIGURATION", below).
-
- Options available to this method, sometimes required, are:
-
- "username => $name"
- The login username for the device. Whether this is required depends
- both on how the device is configured, and how you have configured
- this module to act. If it looks like the device presented a Username
- prompt. and you don't pass the username a Perl exception will be
- thrown.
-
- The username is cached within the module for possible use later on
- when entering "privileged" mode.
-
- "password => $secret"
- The login password for the device. Whether this is required depends
- both on how the device is configured, and how you have configured
- this module to act. If it looks like the device presented a Username
- prompt. and you don't pass the username a Perl exception will be
- thrown.
-
- The password is cached within the module for possible use later on
- when entering "privileged" mode.
-
- "privileged_password => $secret" (optional)
- In the situation where you've activated "privileged paging", yet
- your device uses a different password for privileged mode than
- login, you'll need to set that other password here.
-
- Otherwise, because the module tries to disable paging, it first goes
- into privileged mode as you instructed, and fails with the wrong
- (login) password.
-
- begin_privileged and end_privileged
- $s->begin_privileged;
- # do some work
- $s->end_privileged;
-
- Once you have connected to the device, change to "privileged" mode by
- calling the "begin_privileged" method. The appropriate command will be
- issued for your device platform, from the phrasebook. Likewise to exit
- "privileged" mode call the "end_privileged" method.
-
- Sometimes authentication is required to enter "privileged" mode. In that
- case, the module defaults to using the username and password first
- passed in the "connect" method. However to either override those or set
- them in case they were not passed to "connect", use either or both of
- the following options to "begin_privileged":
-
- $s->begin_privileged({ username => $myname, password => $mysecret });
-
- begin_configure and end_configure
- $s->begin_configure;
- # make some changes
- $s->end_configure;
-
- To enter "configuration" mode for your device platform, call the
- "begin_configure" method. This checks you are already in "privileged"
- mode, as the module assumes this is necessary. If it isn't necessary
- then see "CONFIGURATION" below to modify this behaviour. Likewise to
- exit "configure" mode, call the "end_configure" method.
-
- cmd( $command )
- my $config = $s->cmd('show running-config');
- my @interfaces = $s->cmd('show interfaces brief');
-
- Execute a single command statement on the connected device. The
- statement is executed verbatim on the device, with a newline appended.
-
- In scalar context the response is returned as a single string. In list
- context the gathered response is returned as a list of lines. In both
- cases your local platform's newline character will end all lines.
-
- You can also call the "last_response" method which returns the same data
- with the same contextual behaviour.
-
- This method accepts a hashref of options following the $command, which
- can include a "timeout" value to permit long running commands to have
- all their output gathered.
-
- To handle more complicated interactions, for example commands which
- prompt for confirmation or optional parameters, you should use a Macro.
- These are set up in the phrasebook and issued via the "$s->macro($name)"
- method call. See the Phrasebook and Cookbook manual pages for further
- details.
-
- If you receive response text with a "mangled" copy of the issued command
- at the start, then it's likely you need to set the terminal width. This
- prevents the connected device from line-wrapping long commands. Issue
- something like:
-
- $s->begin_privileged;
- $s->cmd('terminal width 512');
-
- close
- $s->close;
-
- Once you have finished work with the device, call this method. It
- attempts to back out of any "privileged" or "configuration" mode you've
- entered, re-enable paging (unless suppressed) and then disconnect.
-
- If a macro named "disconnect" exists in the loaded phrasebook then it's
- called just before disconnection. This allows you to issue a command
- such as "exit" to cleanly log out.
-
-CONFIGURATION
- Each of the entries below may either be passed as a parameter in the
- options to the "new" method, or called as a method in its own right and
- passed the appropriate setting. If doing the latter, it should be before
- you call the "connect" method.
-
- do_login
- Defaults to true. Pass a zero (false) to disable logging in to the
- device with a username and password, should you get a command prompt
- immediately upon connection.
-
- do_privileged_mode
- Defaults to true. If on connecting to the device your user is
- immediately in "privieleged" mode, then set this to zero (false),
- which permits immediate access to "configure" mode.
-
- do_configure_mode
- Defaults to true. If you set this to zero (false), the module
- assumes you're in "configure" mode immediately upon entering
- "privileged" mode. I can't think why this would be useful but you
- never know.
-
- do_paging
- Defaults to true. Pass a zero (false) to disable the post-login
- reconfiguration of a device which avoids paged command output. If
- you cleanly "close" the device connection then paging is re-enabled.
- Use this option to suppress these steps.
-
- privileged_paging
- Defaults to false. On some series of devices, in particular the
- Cisco ASA and PIXOS7+ you must be in privileged mode in order to
- alter the pager. If that is the case for your device, call this
- method with a true value to instruct the module to better manage the
- situation.
-
- pager_enable_lines
- Defaults to 24. The command issued to re-enable paging (on
- disconnect) typically takes a parameter which is the number of lines
- per page. If you want a different value, set it in this option.
-
- pager_disable_lines
- Defaults to zero. The command issued to disable paging typically
- takes a parameter which is the number of lines per page (zero begin
- to disable paging). If your device uses a different number here, set
- it in this option.
-
- wake_up
- When first connecting to the device, the most common scenario is
- that a Username (or some other) prompt is shown. However if no
- output is forthcoming and nothing matches, the "enter" key is
- pressed, in the hope of triggering the display of a new prompt. This
- is typically most useful on Serial connected devices.
-
- Set this configuration option to zero to suppress this behaviour, or
- to the number of times "enter" should be pressed and output waited
- for. The default is to press "enter" once.
-
-ASYNCHRONOUS BEHAVIOUR
- The standard, and recommended way to use this module is as above,
- whereby the application is blocked waiting for command response. It's
- also possible to send a command, and separately return to ask for output
- at a later time.
-
- $s->say('show clock');
-
- This will send the command "show clock" to the connected device,
- followed by a newline character.
-
- $s->gather();
-
- This will gather and return output, with similar behaviour to "cmd()",
- above. That is, it blocks waiting for output and a prompt, will timeout,
- and accepts the same options.
-
- You can still use "last_response" after calling "gather", however be
- aware that the command (from "say") may be echoed at the start of the
- output, depending on device and connection transport.
-
-DIAGNOSTICS
- To see a log of all the processes within this module, and a copy of all
- data sent to and received from the device, call the following method:
-
- $s->set_global_log_at('notice');
-
- In place of "notice" you can have other log levels (e.g. "debug" for
- more, or "info" for less), and via the embedded Logger at
- "$s->nci->logger" it's possible to finely control the diagnostics.
-
-INTERNALS
- See Net::CLI::Interact.
-
-THANKS
- Over several years I have received many patches and suggestions for
- improvement from users of this module. My heartfelt thanks to all, for
- their contributions.
-
-AUTHOR
- Oliver Gorwits <oliver@cpan.org>
-
-COPYRIGHT AND LICENSE
- This software is copyright (c) 2013 by Oliver Gorwits.
-
- This is free software; you can redistribute it and/or modify it under
- the same terms as the Perl 5 programming language system itself.
-
@@ -22,7 +22,7 @@ nas - Create Reusable Session Scripts
=head1 VERSION
-version 4.131260
+version 4.142720
=head1 SYNOPSIS
@@ -137,7 +137,7 @@ Oliver Gorwits <oliver@cpan.org>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2013 by Oliver Gorwits.
+This software is copyright (c) 2014 by Oliver Gorwits.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,6 +1,6 @@
package Net::Appliance::Session::Async;
{
- $Net::Appliance::Session::Async::VERSION = '4.131260';
+ $Net::Appliance::Session::Async::VERSION = '4.142720';
}
use Moo::Role;
@@ -1,6 +1,6 @@
package Net::Appliance::Session::Engine;
{
- $Net::Appliance::Session::Engine::VERSION = '4.131260';
+ $Net::Appliance::Session::Engine::VERSION = '4.142720';
}
use Moo::Role;
@@ -104,7 +104,8 @@ sub begin_privileged {
die 'a set password is required before begin_privileged'
if not $password;
- $self->cmd($password, { match => 'privileged' });
+ # rt.cpan#92376 timeout when incorrect password
+ $self->cmd($password, { match => 'generic' });
}
$self->prompt_looks_like('privileged')
@@ -1,6 +1,6 @@
package Net::Appliance::Session::Transport;
{
- $Net::Appliance::Session::Transport::VERSION = '4.131260';
+ $Net::Appliance::Session::Transport::VERSION = '4.142720';
}
{
@@ -1,6 +1,6 @@
package Net::Appliance::Session;
{
- $Net::Appliance::Session::VERSION = '4.131260';
+ $Net::Appliance::Session::VERSION = '4.200000';
}
use Moo;
@@ -168,7 +168,7 @@ Net::Appliance::Session - Run command-line sessions to network appliances
=head1 VERSION
-version 4.131260
+version 4.200000
=head1 SYNOPSIS
@@ -407,7 +407,7 @@ the start, then it's likely you need to set the terminal width. This prevents
the connected device from line-wrapping long commands. Issue something like:
$s->begin_privileged;
- $s->cmd('terminal width 512');
+ $s->cmd('terminal width 510');
=head2 close
@@ -537,7 +537,7 @@ Oliver Gorwits <oliver@cpan.org>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2013 by Oliver Gorwits.
+This software is copyright (c) 2014 by Oliver Gorwits.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.