# *** 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