Thursday, 8 December 2016

Perl Script to ASSIGN A PORT TO A SPECIFIC VLAN in cisco switch using Net::Telnet::Cisco module



# *** INFOSTART ***
#
# Script Name   : NW-ASSIGN A PORT TO A SPECIFIC VLAN-Script.pl
# Version       : 1.0
# Description   : ASSIGN A PORT TO A SPECIFIC VLAN
# Written By    : RAGHUVEL
# Written Date  : 21-10-2013
# Compatibility : Shell 1.0 & 2.0
#
# *** INFOEND ***

use strict;

use Net::Telnet::Cisco;






our $ip = "";

our $user_name = "";

our $passwd = "";

our $ena_passwd = "";

our $cmd = "en";

our $vlan_number = "";

our $vlan_name = "";

our $int_type = "";

our $int_num = "";

our $aclCounter = 0;

our $aclCounters = 0;

our $aclCount = 0;

our $item;

our $items;

our @hit;

our @hits;

our @vlaninfo;

our @vlaninfos;

our @int_info;

our $eachvlan;

our $eachvlans;

our @patten_chk;

our @patten_ch;

our @patten_c;

our @patten_ck;

our @patten_cm;

our @patten_check;

our $bhamini;





###############################################################################################################################


sub INTERFACE_CHECK
{
my @hi;
my $ite;
my $Counters = 0;
my @v;
my $l;
my $e;

my $session=$_[0];
$session->waitfor('/>/');
my $combo = $int_type.$int_num;
                my @ou = $session->cmd("sh ip int br");

foreach $ite (@ou)
                        {
                        @hi = split(' ',$ite);
                                        if(!defined $hi[0])
                                        {

                                        }
                                        elsif($hi[0] eq $combo)
                                        {
                                                $v[$aclCounter++] = $ite;
                                        }
                        }
                         $l = $#v;
                         if($l ge 0)
                                {
                                foreach $e (@v)
                                        {
                                       


return $session;

                                        }
                                }

                         else
                                {

print("UNABLE TO ENTER INTO THE INTERFACE");
}
}



sub INTERFACE_CONF

{
my $session=$_[0];

                $session->print("$cmd");

                $session->print("$ena_passwd");

                @patten_c = $session->waitfor('/#/');

                if(defined $patten_c[1])
                     {
                     if($patten_c[1] =~ /#/)
                     {
    logw("VALID ENABLE CREADENTIALS",1);

                      $session->print("conf t");

$session->print("interface $int_type $int_num");

@patten_cm= $session->waitfor('/#/');

                               if(defined $patten_cm[1])
                                    {
                                    if($patten_cm[1] =~ /#/)
                                           {

logw("ENTERED INTO INTERFACE CONF MODE",1);

                                                       $session->cmd("switchport mode access");

                                                         $session->cmd("switchport access vlan $vlan_number");

                                                       logw("Script execution completed  successfully",1);

                                                        print("VLAN ADDED TO INTERFACE SUCCESSFULLY");

   }
else
  {
       print("UNABLE TO ADD VLAN INTO INTERFACE");


    }
      }

                        else

                        {

                        print(" NOT A VALID ENABLE CREDENTIALS=".$ena_passwd);

                        }

}

}
}
sub FINAL_CHECK
{
my $session=$_[0];
                $session->waitfor('/>/');
                my @outputs = $session->cmd("sh vlan");
                foreach $items (@outputs)
                        {
                        @hits = split(' ',$items);
                                        if(!defined $hits[0])
                                        {
                                        }
                                        elsif($hits[0] eq $vlan_number)
                                        {
                                                $vlaninfos[$aclCounters++] = $items;
                                        }
                        }

                        my $lens = $#vlaninfos;
                        if($lens ne 0)
                                        {
                                        print(" CREATED VLAN SUCESSFULLY ");
return $session;
}
                         else

                                {
                               print(" UNABLE TO CREATE VLAN PLEASE CONTACT NETWORK ADMIN ");

                                }

}

sub CREATE_VLAN_SUB
{

my $session=$_[0];

               $session->waitfor('/*#/');

                        if($vlan_number =~ /^(\d+)/)
                        {

                        $session->cmd("vlan $vlan_number");

$session->waitfor('/(config-vlan)/');

                        $session->cmd("name $vlan_name");

                        $session->put( "\cZ" );

return $session;

                        }
                        else
                       {

print(" Only numbers are allowed in vlan name=".$vlan_number);
                        }

}

sub CONF_TERMINAL
{

my $session=$_[0];

                $session->print($cmd);

                $session->print($ena_passwd);

                @patten_ch = $session->waitfor('/#/');

                        if(defined $patten_ch[1])
                               {
                                            if($patten_ch[1] =~ /#/)
                                            {

                                                print("VALID ENABLE CREADENTIALS");

                                                $session->print("conf t");

                                                return $session;

                                            }
                               }

                        else

                        {

                        print(" NOT A VALID ENABLE CREDENTIALS=".$ena_passwd);

                        }

}


sub VLAN_CHECK
{

my $session=CONN_DEVICE();

                my @output = $session->cmd("sh vlan | i $vlan_number");

                foreach $item (@output)
                        {
                        @hit = split(' ',$item);
                                        if(!defined $hit[0])
                                        {

                                        }
                                        elsif($hit[0] eq $vlan_number)
                                        {
                                                $vlaninfo[$aclCounter++] = $item;
                                        }
                        }
                         my $len = $#vlaninfo;
                         if($len ge 0)
                                {
                                foreach $eachvlan (@vlaninfo)
                                        {
  print(" Vlan Alredy exists=".$eachvlan,1);
$session = &INTERFACE_CHECK($session);
  $session = &INTERFACE_CONF($session);
                                        }
                                }

                         else
                                {

logw("NO VLAN FOUND",1);

$session = &CONF_TERMINAL($session);

$session = &CREATE_VLAN_SUB($session);

$session = &FINAL_CHECK($session);

$session = &INTERFACE_CHECK($session);

$session = &INTERFACE_CONF($session);
                                }
}

sub CONN_DEVICE
{


                my $session = new Net::Telnet::Cisco(Timeout => 20, ,ErrMode => 'return');

                $session->open($ip);

                $session->waitfor('/Username:/');

                $session->print($user_name);

                $session->print($passwd);

                our @patten_chk = $session->waitfor('/>/');

                        if(defined $patten_chk[1])
                               {
                                            if($patten_chk[1] =~ />/)
                                            {
                                                    print "Valid Creadentials ";

                                                       

                                                        return $session;


                                            }
                               }

                               else
                               {
                                     

                                        Print("Unable to conn to device"." Possible root cause \n 1.Not valid credentials \n 2.Not valid device ip",13);
                               }

}




sub IP_VALIDATION
{

if($ip=~/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ &&(($1<=255  && $2<=255 && $3<=255  &&$4<=255 )))

        {

print("valid ip conn to device $ip ");

}

else

        {
print("Not a Valid ip=".$ip);

        }

}

&IP_VALIDATION;

&VLAN_CHECK;

#############################################################################################################################




print("SHOULD STOPPED INBETWEEN BEFORE COMPLETION");

No comments:

Post a Comment

Git

1 git add ↳ It lets you add changes from the working directory into the staging area 2 git commit ↳ It lets you save a snapshot of currently...