A coworker said that Arista had this python PortAutoDescription script that auto populates the ports on a switch with it's neighbor description learned through lldp. He was wondering if Juniper had such an implementation. Well this is not built into Junos, but is really easy to do as a SLAX script.
Here it is in action:
{master:0}[edit]
jnpr@SW1# run show lldp neighbors
Local Interface Parent Interface Chassis Id Port info System Name
ge-0/0/47.0 - 00:21:59:c7:09:40 ge-0/0/47.0 SW3b
ge-0/0/44.0 - 78:19:f7:9f:77:00 ge-0/0/44.0 SW2b
{master:0}[edit]
jnpr@SW1# show interfaces
ge-0/0/44 {
unit 0 {
family ethernet-switching {
port-mode trunk;
vlan {
members all;
}
}
}
}
ge-0/0/47 {
unit 0 {
family ethernet-switching {
port-mode access;
vlan {
members v100;
}
}
}
}
{master:0}[edit]
jnpr@SW1# run op IntAutoDesc
lldp-local-interface ge-0/0/47.0 connected to lldp-remote-system-name SW3b
configuration check succeeds
commit complete
lldp-local-interface ge-0/0/44.0 connected to lldp-remote-system-name SW2b
configuration check succeeds
commit complete
{master:0}[edit]
jnpr@SW1# show interfaces
ge-0/0/44 {
description to-SW2b;
unit 0 {
family ethernet-switching {
port-mode trunk;
vlan {
members all;
}
}
}
}
ge-0/0/47 {
description to-SW3b;
unit 0 {
family ethernet-switching {
port-mode access;
vlan {
members v100;
}
}
}
}
SOURCE CODE
----------------------------------
version 1.0;
ns junos= "http://xml.juniper.net/junos/*/junos";
ns xnm= "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs= "http://xml.juniper.net/junos/commit-scripts/1.0";
import "../import/junos.xsl";
match /
{
<event-op-results> {
var $lldp-info = <command> "show lldp neighbor ";
var $lldp-result = jcs:invoke($lldp-info);
var $con = jcs:open();
for-each($lldp-result/lldp-neighbor-information)
{
var $lldp-int = current()/lldp-local-interface;
var $lldp-remote = current()/lldp-remote-system-name;
<output>local-name($lldp-int) _ " " _ $lldp-int _ " connected to " _ local-name($lldp-remote) _ " " _ $lldp-remote;
var $if = substring-before($lldp-int, ".");
var $int = <configuration> {
<interfaces> {
<interface> {
<name> $if;
<description> "to-" _ $lldp-remote;
}
}
}
call jcs:load-configuration($connection = $con, $configuration = $int);
}
expr jcs:close($con);
}
}
No comments:
Post a Comment