Loading ...
Sorry, an error occurred while loading the content.
 

Re: [PBML] 1st PERL script up for review

Expand Messages
  • JC
    Hi Bruce, Congrats on taking the first step One of the important things that we ve found is also check for the errmsg. The TFTP server Might not always be
    Message 1 of 4 , Nov 29, 2007
      Hi Bruce,

      Congrats on taking the first step

      One of the important things that we've found is also check for the errmsg. The TFTP server Might not always be available or the file copy might fail or myriad of other things.You can read more about errmsg in the Net::Telnet docs. But I've seen code that essentially just does

      if($session->errmsg) {
      # Do your error handling here like
      print LOG "Error: " . $session->lastline;
      }

      Best,

      JC




      ----- Original Message ----
      From: Bruce Henderson <BHenderson@...>
      To: perl-beginner@yahoogroups.com
      Sent: Thursday, November 29, 2007 8:57:38 AM
      Subject: [PBML] 1st PERL script up for review














      Hello,



      I've just finished my first PERL script, one of many to come I hope, and

      was hoping that someone could look at it and give me some feedback on

      its structure. This script is used to backup our Cisco switch and

      router configs. I obtained most of the code from the documentation of

      Net::Telnet: :Cisco and Text::CSV modules. Anyways the script works

      which was my first goal now I would love to learn a bit more about it.



      Any info would be great. Thanks.



      Switch-configs. pl



      #!/usr/bin/perl



      #



      # ./switch-configs. pl 'tftp server address' 'CSV file'



      #



      use Net::Telnet: :Cisco;



      use Text::CSV;



      my @locations;



      my $csv = Text::CSV->new( );



      my $backup_host = $ARGV[0];



      open (FILE, $ARGV[1]) or die "Couldn't open location file: $!";



      while (<FILE>) {



      $csv->parse( $_);



      push(@locations, [$csv->fields] );



      }



      close FILE;



      my $total = @locations;



      for ($count = 1; $count <= $total; $count++) {



      my $session = Net::Telnet: :Cisco->new( Host => $locations[$ count][0] );



      $session->login( 'login', 'password');



      #Coping the config via TFTP



      if ($session->enable( "password" ) ) {



      $session->cmd( "copy system:/running- config " .

      "tftp://$backup_ host/$locations[$count][1]\ n\n\n");



      } else {



      warn "Can't enable: " . $session->errmsg;



      }



      $session->close;



      }



      Sample CSV data



      address,hostname



      10.24.1.10,CUF



      10.24.1.11,L122- 3



      10.24.1.13,SS



      10.24.1.14,ITS- PBX



      10.24.1.15,EAST- TS



      10.24.1.16,LIZ- B



      ____________ _________ ________



      Bruce Henderson



      Network Administrator



      Concordia University - Portland



      (503) 493-6481



      [Non-text portions of this message have been removed]














      <!--

      #ygrp-mkp{
      border:1px solid #d8d8d8;font-family:Arial;margin:14px 0px;padding:0px 14px;}
      #ygrp-mkp hr{
      border:1px solid #d8d8d8;}
      #ygrp-mkp #hd{
      color:#628c2a;font-size:85%;font-weight:bold;line-height:122%;margin:10px 0px;}
      #ygrp-mkp #ads{
      margin-bottom:10px;}
      #ygrp-mkp .ad{
      padding:0 0;}
      #ygrp-mkp .ad a{
      color:#0000ff;text-decoration:none;}
      -->



      <!--

      #ygrp-sponsor #ygrp-lc{
      font-family:Arial;}
      #ygrp-sponsor #ygrp-lc #hd{
      margin:10px 0px;font-weight:bold;font-size:78%;line-height:122%;}
      #ygrp-sponsor #ygrp-lc .ad{
      margin-bottom:10px;padding:0 0;}
      -->



      <!--

      #ygrp-mlmsg {font-size:13px;font-family:arial, helvetica, clean, sans-serif;}
      #ygrp-mlmsg table {font-size:inherit;font:100%;}
      #ygrp-mlmsg select, input, textarea {font:99% arial, helvetica, clean, sans-serif;}
      #ygrp-mlmsg pre, code {font:115% monospace;}
      #ygrp-mlmsg * {line-height:1.22em;}
      #ygrp-text{
      font-family:Georgia;
      }
      #ygrp-text p{
      margin:0 0 1em 0;}
      #ygrp-tpmsgs{
      font-family:Arial;
      clear:both;}
      #ygrp-vitnav{
      padding-top:10px;font-family:Verdana;font-size:77%;margin:0;}
      #ygrp-vitnav a{
      padding:0 1px;}
      #ygrp-actbar{
      clear:both;margin:25px 0;white-space:nowrap;color:#666;text-align:right;}
      #ygrp-actbar .left{
      float:left;white-space:nowrap;}
      .bld{font-weight:bold;}
      #ygrp-grft{
      font-family:Verdana;font-size:77%;padding:15px 0;}
      #ygrp-ft{
      font-family:verdana;font-size:77%;border-top:1px solid #666;
      padding:5px 0;
      }
      #ygrp-mlmsg #logo{
      padding-bottom:10px;}

      #ygrp-vital{
      background-color:#e0ecee;margin-bottom:20px;padding:2px 0 8px 8px;}
      #ygrp-vital #vithd{
      font-size:77%;font-family:Verdana;font-weight:bold;color:#333;text-transform:uppercase;}
      #ygrp-vital ul{
      padding:0;margin:2px 0;}
      #ygrp-vital ul li{
      list-style-type:none;clear:both;border:1px solid #e0ecee;
      }
      #ygrp-vital ul li .ct{
      font-weight:bold;color:#ff7900;float:right;width:2em;text-align:right;padding-right:.5em;}
      #ygrp-vital ul li .cat{
      font-weight:bold;}
      #ygrp-vital a{
      text-decoration:none;}

      #ygrp-vital a:hover{
      text-decoration:underline;}

      #ygrp-sponsor #hd{
      color:#999;font-size:77%;}
      #ygrp-sponsor #ov{
      padding:6px 13px;background-color:#e0ecee;margin-bottom:20px;}
      #ygrp-sponsor #ov ul{
      padding:0 0 0 8px;margin:0;}
      #ygrp-sponsor #ov li{
      list-style-type:square;padding:6px 0;font-size:77%;}
      #ygrp-sponsor #ov li a{
      text-decoration:none;font-size:130%;}
      #ygrp-sponsor #nc{
      background-color:#eee;margin-bottom:20px;padding:0 8px;}
      #ygrp-sponsor .ad{
      padding:8px 0;}
      #ygrp-sponsor .ad #hd1{
      font-family:Arial;font-weight:bold;color:#628c2a;font-size:100%;line-height:122%;}
      #ygrp-sponsor .ad a{
      text-decoration:none;}
      #ygrp-sponsor .ad a:hover{
      text-decoration:underline;}
      #ygrp-sponsor .ad p{
      margin:0;}
      o{font-size:0;}
      .MsoNormal{
      margin:0 0 0 0;}
      #ygrp-text tt{
      font-size:120%;}
      blockquote{margin:0 0 0 4px;}
      .replbq{margin:4;}
      -->








      ____________________________________________________________________________________
      Be a better pen pal.
      Text or chat with friends inside Yahoo! Mail. See how. http://overview.mail.yahoo.com/

      [Non-text portions of this message have been removed]
    Your message has been successfully submitted and would be delivered to recipients shortly.