Benutzer-Werkzeuge

Webseiten-Werkzeuge


omnivista-scripting

Dies ist eine alte Version des Dokuments!


OmniVista 2500 - CLI-Scripting mit JavaScript

Der folgende Tech-Tipp soll die Möglichkeiten des Scripting Moduls des OmniVista2500 aufzeigen. Neben der Nutzung der bekannten AOS CLI Syntax, besteht die Möglichkeit Kommandos in JavaScript einzubinden, um so beispielsweise bedingte Konfigurationen durchzuführen (z.B. Learned Port Security nur auf Mobile Ports) oder komplexe Prüfungen der Konfiguration durchzuführen.

Das Modul kann zur Ausführung der Scripte neben den eingebauten System Variablen (z.B. GeräteTyp, IP-Adresse, MAC-Adresse) auch Benutzer Variablen zur Ausführung der Scripte heranziehen. Details zu den Möglichkeiten werden im OmniVista direkt unter dem Menüpunkt ?Help im CLI-Scripting Modul angeboten.

Folgend werden einige Beispiel Scripte kurz erklärt, die individuell angepasst werden können und den Konfigurationsaufwand in einigen Fällen bereits erheblich reduzieren können.

Überprüfung von gleichartiger 802.1x Konfiguration

Das folgende Script überprüft, ob die AAA Konfiguration auf allen Ports gleich ist oder sich die Konfiguration auf einzelnen Ports unterscheidet.

Anhand eines Regulären Ausdrucks wird hier mithilfe des Kommandos „show vlan port mobile“ eine Liste (Array) mit allen 802.1x Ports erstellt. Anschließend wird mit „show configuration snapshot aaa“ die komplette AAA Konfiguration eingelesen und mit einem Regulären Ausdruck so modifiziert, dass diese zwischen den Ports vergleichbar ist.

Aus:

 
802.1x 1/20 supp-polling retry 10 

wird

 
802.1x      supp-polling retry 10

Diese Konfiguration wird nun mit dem jeweilig nächsten Port verglichen und auf Differenzen untersucht (z.B. Port 1/2 mit Port 1/3).Dieser Vorgang wird für alle 802.1x Ports ausgeführt, die in der Liste „ListOf8021xPorts“ aufgeführt sind. Sollten Unterschiede auftreten, so sind diese anschliessend im Audit Log (siehe Screenshot) zu finden.

Anbei der JavaScript Code für diese Funtion.

:!: Hinweis: Die folgende Scripte wurde mit OmniVsita 2500 4.2.1R01 Build 95 auf AOS 6.x Geräten (6450 und 6400) genutzt. Andere Geräte sowie AOS Versionen unterscheiden sich ggf. in der Syntax der Kommandos und in deren Ausgabe. Die Scripte müssen daher immer genau geprüft werden, bevor diese für einen flächendeckenden RollOut verwendet werden können.:!:

<js>
/*@@Check if all 8021x Config is identically. Created by Benjamin Domroese, Januar 2018@@*/
cli.sendCmd("show vlan port mobile");
cli.cliSleep("2000"); /*Give the command 2 seconds time, before the next is executed*/
var response = cli.lastResponse();
var pattern = new RegExp("\\d+\\/\\d+(?=\\s+on\\s+\\d{1,4}\\s+on\\-8021x)","gm");/*Create REGEX that only stores the port enabled for 8021x */
var noerrorfound = true;
var okmsg = false;

if (pattern.test(response)==false)
{
cli.trace("No 8021x Ports found on: " + "$IP_ADDRESS");
okmsg = true;
}/*if*/
else
{
    var ListOf8021xPorts = response.match(pattern);/*Create an Array out of all 8021x Ports seen with "show vlan port mobile"*/
	cli.sendCmd("show configuration snapshot aaa");
	var aaa_config = cli.lastResponse();
	
        for (i=0;i<ListOf8021xPorts.length-1 && ListOf8021xPorts != null;i++)
        {
	    var pattern_2 = new RegExp("(?:802.1x\\s+" + ListOf8021xPorts[i] + ").*(\\r\\n|\\r|\\n)","g");/*REGEX Object that capture everything between the Port Number and a new line (just the pure config)*/
	    var first_port = aaa_config.match(pattern_2);
	    var pattern_3 = new RegExp("(?:802.1x\\s+" + ListOf8021xPorts[i+1] + ").*(\\r\\n|\\r|\\n)","g");
	    var second_port = aaa_config.match(pattern_3);

		    for (j=0;j<first_port.length && second_port[j]!= null;j++)
		    {
		    	var first_port_clean = first_port[j].replace(/\d{1,2}\/\d{1,2}/,""); /* Replace Port Number, so that config should be similar*/
				var second_port_clean = second_port[j].replace(/\d{1,2}\/\d{1,2}/,""); 
				
				    if (second_port_clean != first_port_clean)
				    {
				    	cli.errorLog("Warning on " + "$IP_ADDRESS" + "! Port " + ListOf8021xPorts[i] + " is different from " + ListOf8021xPorts[i+1]);
						cli.errorLog("Port Config on " + ListOf8021xPorts[i] + " is: " + first_port_clean);
						cli.errorLog("Port Config on " + ListOf8021xPorts[i+1] + " is: " + second_port_clean);
						var noerrorfound = false;						
					}/*if*/
					
		    }/*for*/	
    }/*for*/
}/*else*/
if (noerrorfound==true && okmsg==false)
{
	cli.trace("Everything ok on " + "$IP_ADDRESS" + "! All Ports are configured identically");
}/*if*/

</js>

Anbei ein Screenshot der Ausgabe, die Hinweise auf unterschiedliche Konfigurationen bietet.

omnivista-scripting.1517425516.txt.gz · Zuletzt geändert: 2024/06/09 10:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki