<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: cisco code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 15:46:39 GMT</pubDate>
    <description>DZone Snippets: cisco code</description>
    <item>
      <title>Retrieve Cisco router traffic statistics using perl and RRDTOOL and PHP</title>
      <link>http://snippets.dzone.com/posts/show/5287</link>
      <description>Traffic retrieving perl script:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    #!/opt/csw/bin/perl -w&lt;br /&gt;    ##################################################&lt;br /&gt;    # rrdtraf.pl&lt;br /&gt;    #&lt;br /&gt;    # Trafego de equipamentos Cisco&lt;br /&gt;    #&lt;br /&gt;    # 2006.01.12 - Adriano P. &lt;br /&gt;    # $Id: $&lt;br /&gt;&lt;br /&gt;    ######################&lt;br /&gt;    require 5.003;&lt;br /&gt;    use strict;&lt;br /&gt;    use SNMP_Session;&lt;br /&gt;    use BER;&lt;br /&gt;    use SNMP_util "0.90";&lt;br /&gt;    use Time::Local;&lt;br /&gt;    use RRDs;&lt;br /&gt;    use Getopt::Long;&lt;br /&gt;    use Pod::Usage;&lt;br /&gt;&lt;br /&gt;    ##### GLOBAL #####&lt;br /&gt;    my %opt;&lt;br /&gt;    my @routers;&lt;br /&gt;    my $IP_APPEND="::2:2";&lt;br /&gt;    my $ERROR;&lt;br /&gt;    my %rrd;&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub main {&lt;br /&gt;    init();&lt;br /&gt;&lt;br /&gt;    Options(%opt);&lt;br /&gt;&lt;br /&gt;    open(PAR, "rrdtraf.par") || die "Problema ao abrir rrdtraf.parn";&lt;br /&gt;&lt;br /&gt;    Msg("* Coletando dados dos switches");&lt;br /&gt;    while () {&lt;br /&gt;    next if grep(/^(#)/,$_);&lt;br /&gt;&lt;br /&gt;    my ($community,$ip,$net,@if) = split /:/;&lt;br /&gt;    #$ip = "${community}@${ip}"; #host:port:timeout:retries&lt;br /&gt;&lt;br /&gt;    LeituraSNMP($community, $ip,@if);&lt;br /&gt;&lt;br /&gt;    syswrite(STDOUT,'.',1) if (!$opt{verbose} &amp;&amp; !$opt{V});&lt;br /&gt;    }&lt;br /&gt;    close(PAR);&lt;br /&gt;    Msg("n","* Fim");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    main;&lt;br /&gt;    exit 0;&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub CriaRRD($) {&lt;br /&gt;    my $arquivo = shift;&lt;br /&gt;&lt;br /&gt;    print "- Criando base de dados:($arquivo) - " if $opt{verbose};&lt;br /&gt;&lt;br /&gt;    RRDs::create ("$arquivo", "--start", time(),&lt;br /&gt;    "--step", "300",&lt;br /&gt;    "DS:ifInOctets:COUNTER:600:0:U",&lt;br /&gt;    "DS:ifOutOctets:COUNTER:600:0:U",&lt;br /&gt;    "RRA:AVERAGE:0.5:1:600",    #2 dias, com amostra de 5min&lt;br /&gt;    "RRA:AVERAGE:0.5:6:700",    #2 semanas, com amostra de 30min&lt;br /&gt;    "RRA:AVERAGE:0.5:24:775",    #2 meses, com amostra de 2h&lt;br /&gt;    "RRA:AVERAGE:0.5:288:400");    #1 ano, com amostra de 1 dia&lt;br /&gt;    if ($ERROR = RRDs::error) {&lt;br /&gt;    die "$0: unable to graph $arquivo: $ERRORn";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    print "okn" if $opt{verbose};&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub LeituraSNMP($$$) {&lt;br /&gt;    my $community = shift;&lt;br /&gt;    my $ip = shift;&lt;br /&gt;    my (@if) = @_;&lt;br /&gt;&lt;br /&gt;    my ($idx, $arquivo);&lt;br /&gt;    my $ifInBroadcastPkts = "1.3.6.1.2.1.2.2.1.12";&lt;br /&gt;    my $ifOutBroadcastPkts = "1.3.6.1.2.1.2.2.1.18";&lt;br /&gt;    my @oids = ('ifIndex','ifDescr','ifInOctets','ifOutOctets');&lt;br /&gt;&lt;br /&gt;    my @stack = &amp;SNMP("${community}@${ip}", @oids);&lt;br /&gt;    #$ip =~ s/.*@//;&lt;br /&gt;&lt;br /&gt;    print "--[ $ip ]-----------n" if $opt{verbose};&lt;br /&gt;&lt;br /&gt;    foreach $idx (@stack) {&lt;br /&gt;    my ($id,$nome) = SNMP_util::Check_OID('ifDescr');&lt;br /&gt;    next if (!${$idx}{$id});&lt;br /&gt;    # Ignora interfaces nao cadastradas&lt;br /&gt;    if( !grep(/^${$idx}{$id}$/,@if) ) {&lt;br /&gt;    next;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    my @dados = ();&lt;br /&gt;    $dados[0] = $ip;                # 1: ip&lt;br /&gt;    @dados[1,2,3,4] = &amp;Dados($idx,@oids);&lt;br /&gt;    my $ifIndex = $dados[1];&lt;br /&gt;&lt;br /&gt;    $arquivo = "${ip}_${ifIndex}.rrd";&lt;br /&gt;    if (! -e "$arquivo") {&lt;br /&gt;    CriaRRD($arquivo);&lt;br /&gt;    }&lt;br /&gt;    AtualizaRRD($arquivo, @dados);&lt;br /&gt;    }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub AtualizaRRD(@) {&lt;br /&gt;    my $arquivo = shift;&lt;br /&gt;    my (@dados) = @_;&lt;br /&gt;&lt;br /&gt;    print "- $dados[0], $dados[1], $dados[2], $dados[3], $dados[4]n" if $opt{verbose};&lt;br /&gt;&lt;br /&gt;    RRDs::update ($arquivo, "N:$dados[3]:$dados[4]");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub GrafRRD {&lt;br /&gt;    my ($start_date,$eqto) = @_;&lt;br /&gt;&lt;br /&gt;    print "Gerando grafico ($start_date)...";&lt;br /&gt;&lt;br /&gt;    my @option = ("-s", $start_date, "-w", "600", "-h", "170",&lt;br /&gt;    "-e", "now", "--alt-autoscale", "-l 0",&lt;br /&gt;    "-x", "HOUR:1:DAY:1:HOUR:2:0:%H");&lt;br /&gt;&lt;br /&gt;    if ($start_date &gt;= 2) {&lt;br /&gt;&lt;br /&gt;    ######################&lt;br /&gt;    # GRAPH 1&lt;br /&gt;    RRDs::graph ("$eqto.gif", @option,&lt;br /&gt;    "DEF:in=$eqto.gif:ifInOctets:AVERAGE",&lt;br /&gt;    "DEF:out=$eqto.gif:ifOutOctets:AVERAGE",&lt;br /&gt;    "LINE2:c13#0000aa:Entrada",&lt;br /&gt;    "LINE2:c14#ff66ff:Saida");&lt;br /&gt;    if ($ERROR = RRDs::error) {&lt;br /&gt;    die "$0: unable to graph $eqto.gif: $ERRORn";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    print "okn";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub SNMP($@) {&lt;br /&gt;    my $ip = shift;&lt;br /&gt;    my @oids = @_;&lt;br /&gt;&lt;br /&gt;    my $ip_="$ip${IP_APPEND}";&lt;br /&gt;    my ($idx,$oid,@stack);&lt;br /&gt;&lt;br /&gt;    foreach my $tuple (snmpwalk($ip_, @oids)) {&lt;br /&gt;    my($var,$counter) = split /:/, $tuple, 2;&lt;br /&gt;    $idx = substr($var, rindex($var,'.')+1);&lt;br /&gt;    $oid = substr($var, 0, length($var)-length($idx)-1);&lt;br /&gt;    #warn "* $vart$countern" if $opt{V};&lt;br /&gt;    $stack[$idx]{$oid} = $counter;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return @stack;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub Dados($$) {&lt;br /&gt;    my $var = shift;&lt;br /&gt;    my @oids = @_;&lt;br /&gt;&lt;br /&gt;    my @dados = ();&lt;br /&gt;&lt;br /&gt;    for(my $i=0; $i  2) if $$opt{man};&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    ##################################################################&lt;br /&gt;    sub init {&lt;br /&gt;    # queue up reading the MIB file&lt;br /&gt;    #&amp;snmpQueue_MIB_File("/home/adr/mibs/IWFG.MIB");&lt;br /&gt;    $SNMP_Session::suppress_warnings = 2;&lt;br /&gt;    $SNMP_util::Debug = 0;&lt;br /&gt;    $= = 1000;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #eof&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;rrdtraf.par - sample file&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    community:10.1.2.3:Comment:FastEthernet0/1:FastEthernet0/2&lt;br /&gt;    community:10.1.2.4:Comment:FastEthernet0/1&lt;br /&gt;    community:10.1.2.5:Comment:FastEthernet0/1:FastEthernet0/2:FastEthernet0/12:FastEthernet0/18&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;PHP script to plot the traffic graph:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    {!--&lt;br /&gt;    ##################################################&lt;br /&gt;    # rrdgraph.php&lt;br /&gt;    #&lt;br /&gt;    # Plotagem dos graficos de arquivos rrd&lt;br /&gt;    #&lt;br /&gt;    # 2006.01.12 - Adriano P.&lt;br /&gt;    # $Id: $&lt;br /&gt;    --}&lt;br /&gt;    {?php&lt;br /&gt;    $display = $_GET['display'];&lt;br /&gt;&lt;br /&gt;    if ($display == 'image') {&lt;br /&gt;&lt;br /&gt;    header ("Content-type: image/png",false);&lt;br /&gt;&lt;br /&gt;    $display = $_GET['display'];&lt;br /&gt;    $rrdtool = "/opt/csw/bin/rrdtool ";&lt;br /&gt;    $graph_opt =     "--height 150 --width 550 " .&lt;br /&gt;    "--start -172800 ".&lt;br /&gt;    "--imgformat PNG ".&lt;br /&gt;    "--no-minor ".&lt;br /&gt;    "-c BACK#ffffff ".&lt;br /&gt;    "-c SHADEA#ffffff ".&lt;br /&gt;    "-c SHADEB#ffffff ".&lt;br /&gt;    "-c FRAME#ffffff ".&lt;br /&gt;    "-v 'bits/seg' -L 8  ";&lt;br /&gt;&lt;br /&gt;    $arq1="/home/aprado/proj/traf/".$_GET['arq1'];&lt;br /&gt;&lt;br /&gt;    $graph =&lt;br /&gt;    "DEF:in1=$arq1:ifInOctets:AVERAGE ".&lt;br /&gt;    "DEF:out1=$arq1:ifOutOctets:AVERAGE ".&lt;br /&gt;    "CDEF:in1_bps=in1,8,* ".   #N&#195;O ESQUECER DE MULTIPLICAR POR 8&lt;br /&gt;    "CDEF:out1_bps=out1,8,* ".  #(1 byte = 8 bits)&lt;br /&gt;    "HRULE:0#000000:'       ' ".&lt;br /&gt;    "AREA:in1_bps#6699cc:'Saida' ".&lt;br /&gt;    "LINE2:out1_bps#003399:'Entrada' ";&lt;br /&gt;&lt;br /&gt;    # function for rrdtool execution&lt;br /&gt;    function rrdtool_execute($rrdtool, $command) {&lt;br /&gt;    return fpassthru(popen($rrdtool . $command, "r"));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    $command = $graph_opt . $graph;&lt;br /&gt;    return rrdtool_execute($rrdtool, " graph - $command");&lt;br /&gt;    }&lt;br /&gt;    ?}&lt;br /&gt;&lt;br /&gt;    {HTML}&lt;br /&gt;    {HEAD}&lt;br /&gt;    {STYLE TYPE="text/css"}&lt;br /&gt;    H1 {&lt;br /&gt;    font-weight: bold;&lt;br /&gt;    font-size: 18pt;&lt;br /&gt;    line-height: 18pt;&lt;br /&gt;    font-family: arial,helvetica;&lt;br /&gt;    font-variant: normal;&lt;br /&gt;    font-style: normal;&lt;br /&gt;    }&lt;br /&gt;    BODY {&lt;br /&gt;    color: black;&lt;br /&gt;    background-color: white;&lt;br /&gt;    font-size: 11pt;&lt;br /&gt;    line-height: 12pt;&lt;br /&gt;    font-family: arial,helvetica;&lt;br /&gt;    font-variant: normal;&lt;br /&gt;    font-style: normal;&lt;br /&gt;    }&lt;br /&gt;    {/STYLE}&lt;br /&gt;    {/HEAD}&lt;br /&gt;    {BODY}&lt;br /&gt;&lt;br /&gt;    {CENTER}&lt;br /&gt;    {TABLE}&lt;br /&gt;    {?php&lt;br /&gt;&lt;br /&gt;    function graphit($arq1, $descr1) {&lt;br /&gt;    print "{tr align='center'}{td}{font color='#003399'}{b}$descr1{/b}{/font}{br}n";&lt;br /&gt;    print "{/td}{/tr}n";&lt;br /&gt;    print "{tr}{td align='center'}{img xsrc='/traf/rrdgraph.php?display=image&amp;arq1=$arq1' border='0'}";&lt;br /&gt;    print "{hr width='100%' size='2'}{/td}{/tr}n";&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    graphit("10.1.2.3_2.rrd","10.1.2.3 - f0/1: Comentario");&lt;br /&gt;    graphit("10.1.2.3_3.rrd","10.1.2.3 - f0/2: Comentario");&lt;br /&gt;&lt;br /&gt;    ?}&lt;br /&gt;    {/TABLE}&lt;br /&gt;    {/CENTER}&lt;br /&gt;    {/BODY}&lt;br /&gt;    {/HTML}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Fri, 28 Mar 2008 20:38:22 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5287</guid>
      <author>adr1an0 (Adr)</author>
    </item>
    <item>
      <title>Perl - Cisco VLAN Removal</title>
      <link>http://snippets.dzone.com/posts/show/4058</link>
      <description>// Perl - Cisco VLAN Removal&lt;br /&gt;// new.txt format &lt;br /&gt;// ipaddress|loginpass|enablepass|gigabitEthernet3/48|20&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!c:/perl/bin/perl.exe&lt;br /&gt;&lt;br /&gt;use Net::Telnet::Cisco;&lt;br /&gt;&lt;br /&gt;open(CISCO,'new.txt');&lt;br /&gt; while (&lt;CISCO&gt;) {&lt;br /&gt; chomp;&lt;br /&gt;my @fields = split(/\|/, $_);&lt;br /&gt;&lt;br /&gt;my $host = $fields[0];&lt;br /&gt;my $login = $fields[1];&lt;br /&gt;my $telnet = $fields[2];&lt;br /&gt;my $interface = $fields[3];&lt;br /&gt;my $vlan = $fields[4];&lt;br /&gt;&lt;br /&gt;#print "Content-type:text/html\n\n";&lt;br /&gt;#print "Switch = &lt;b&gt;$host&lt;/b&gt;    &lt;br&gt;";&lt;br /&gt;#print "Command =  &lt;b&gt;username $macaddr password $macaddr&lt;/b&gt;  &lt;br&gt;";&lt;br /&gt;&lt;br /&gt;$session = Net::Telnet::Cisco-&gt;new(Host =&gt; "$host", Input_log =&gt; "input.log");&lt;br /&gt;$session-&gt;login(Password =&gt; "$login");&lt;br /&gt;$session-&gt;enable("$telnet");&lt;br /&gt;$session-&gt;cmd("config t");&lt;br /&gt;$session-&gt;cmd("int $interface");&lt;br /&gt;$session-&gt;cmd("no switchport access vlan $vlan");&lt;br /&gt;$session-&gt;cmd("no switchport mode access");&lt;br /&gt;$session-&gt;cmd("exit");&lt;br /&gt;$session-&gt;close();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 23 May 2007 18:09:33 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4058</guid>
      <author>amandaemily (Amanda Emily)</author>
    </item>
    <item>
      <title>Perl - Cisco Wireless Managment</title>
      <link>http://snippets.dzone.com/posts/show/4057</link>
      <description>// Perl script to update MAC access table on Cisco IOS-based AiroNets&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!c:/perl/bin/perl.exe&lt;br /&gt;&lt;br /&gt;# Update Aironet IOS mac addresses&lt;br /&gt;&lt;br /&gt;use Net::Telnet::Cisco;&lt;br /&gt;use vars qw($r @data);&lt;br /&gt;&lt;br /&gt;print "Content-type:text/html\n\n";&lt;br /&gt;&lt;br /&gt;read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});&lt;br /&gt;@pairs = split(/&amp;/, $buffer);&lt;br /&gt;foreach $pair (@pairs) {&lt;br /&gt;    ($name, $value) = split(/=/, $pair);&lt;br /&gt;    $value =~ tr/+/ /;&lt;br /&gt;    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;&lt;br /&gt;    $FORM{$name} = $value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$macaddr = $FORM{'command'};&lt;br /&gt;#$macaddr = 'AABBCCDDEEFF';&lt;br /&gt;&lt;br /&gt;print "using command &lt;u&gt;username &lt;b&gt;$macaddr&lt;/b&gt; password &lt;b&gt;0$macaddr&lt;/b&gt;&lt;/u&gt;&lt;br&gt;&lt;br&gt;";&lt;br /&gt;&lt;br /&gt;	&lt;br /&gt;print "Updating AP &lt;b&gt;127.0.0.1 (conference center)&lt;/b&gt;    &lt;br&gt;";&lt;br /&gt;$r = Net::Telnet::Cisco-&gt;new(Host=&gt;"127.0.0.1");&lt;br /&gt;	$r-&gt;login("login","password");&lt;br /&gt;die($r-&gt;errmsg) unless($r-&gt;enable("password"));&lt;br /&gt;	$r-&gt;cmd('terminal length 0');&lt;br /&gt;	$r-&gt;cmd('config t');&lt;br /&gt;	$r-&gt;cmd("username $macaddr password $macaddr");&lt;br /&gt;	$r-&gt;cmd("username $macaddr autocommand exit");&lt;br /&gt;	$r-&gt;cmd("exit");&lt;br /&gt;	$r-&gt;cmd("write memory quiet");&lt;br /&gt;	$r-&gt;cmd('terminal length 24');&lt;br /&gt;	$r-&gt;close();&lt;br /&gt;print "Done!";&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Wed, 23 May 2007 18:06:00 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4057</guid>
      <author>amandaemily (Amanda Emily)</author>
    </item>
  </channel>
</rss>
