Benutzer-Werkzeuge

Webseiten-Werkzeuge


omnivista-scripting

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
omnivista-scripting [2018/02/01 09:29] benny-domroeseomnivista-scripting [2024/06/09 10:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== OmniVista 2500 - CLI-Scripting mit JavaScript ====== ====== 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 mobilen Ports) oder komplexe Prüfungen der Konfiguration durchzuführen.+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 (z.B. Learned Port Security nur auf mobilen 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.+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. 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.
  
-:!: __Hinweis:__ Die folgende Scripte wurde mit OmniVista 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.:!:+:!: __Hinweis:__ Die folgende Scripte wurden mit OmniVista 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.:!:
  
 ===== Überprüfung der installierten FPGA Version ===== ===== Überprüfung der installierten FPGA Version =====
Zeile 213: Zeile 213:
 </code> </code>
 Anbei ein Screenshot der Ausgabe, die Hinweise auf unterschiedliche Konfigurationen bietet. Anbei ein Screenshot der Ausgabe, die Hinweise auf unterschiedliche Konfigurationen bietet.
-{{ :ovscripting:check8021xportconfigscreenshot.gif?600 |}}+{{ :ovscripting:check8021xportconfigscreenshot.gif|}}
  
 ===== UNP´s anhand von Vorlagen erstellen ===== ===== UNP´s anhand von Vorlagen erstellen =====
Zeile 242: Zeile 242:
 { {
  cli.errorLog("Profile UNP-Embedded not found for use as template!");  cli.errorLog("Profile UNP-Embedded not found for use as template!");
 +}/*else*/
 +</js>
 +</code>
 +
 +===== Überprüfung ob alle Ports per 802.1x gesichert sind =====
 +
 +Das nächste Beispiel benötigt bei der Ausführung die Eingabe von **User Variablen**. Im "Send Script Wizard" werden hier unter Punkt 4 "Define User Variables" abgefragt. Das Script prüft die Anzahl der Verfügbaren Ports des Systems, subtrahiert die erwarteten Non-802.1x Ports (z.B. Uplink Ports) sowie die 802.1x Ports und gibt im Log File an, ob die Anzahl der 802.1x Ports den Erwartungen entspricht. 
 +
 +Die Anzahl der Ports habe ich in diesem Beispiel per "show interfaces status" berechnet. Dabei werden mithilfe der Funktion "unique" doppelte Einträge gelöscht (z.B. Hybrid Ports die doppelt angezeigt werden). 
 +
 +Die Anzahl der 802.1x Ports wird erneut mit "show vlan port mobile" berechnet. Im Audit werden schlussendlich die Ergebnisse angezeigt. Diese beinhalten die Anzahl der Ports des Systems, die erwarteten 802.1x und Uplink Ports sowie (wenn vorhanden) die Anzahl ungeschützter Ports. 
 +
 +
 +<code>
 +<js>
 +/*@@Script for checking if all Ports are configured as 8021x. Use on your own risk! Benjamin Domroese, Januar 2018@@*/
 +/*@@Dont forget to enter the number of expected Uplinks as uservariable in the CLI Module. This Script checks for unsecured Ports@@*/
 +
 +function unique(array)/* In case there are duplicate entries i.e. for hybrid ports */
 +{
 + array.sort();
 + for (i=0;i<array.length;i++) 
 + if (a[i]==a[i+1])
 + {
 + a.splice(i,1);
 +
 + }/*if*/
 +    return array.length;
 +}/* function for removing duplicates */
 +
 +/* Check the number of available Ports on the System */
 +cli.sendCmd("show interfaces status");
 +var response_1 = cli.lastResponse();
 +var pattern_1 = /\d{1,2}\/\d{1,2}/g; /*RegeEx that only stores the Port i.e. 1/7*/
 +var a = response_1.match(pattern_1);
 +var nr_of_ports_available = unique(a); /*Create a Array with the Ports. This is created with var "a" passed to the function for cleaning duplicates. It returns the lenght of the array (the number of ports) */  
 +
 +/* Check the number of 8021x Ports */
 +cli.sendCmd("show vlan port mobile");
 +var response_2 = cli.lastResponse();
 +var pattern_2 = /on-8021x/g;
 +var b = response_2.match(pattern_2);
 +if (b != null)/* Check if there is no 8021x */
 +{
 +    var nr_of_ports_8021x = b.length;
 +}/* if */
 +else
 +{
 +    var nr_of_ports_8021x = 0;
 +}/*else*
 +
 +/* Check if there are more unsecured Ports than expected and return unsecured Ports to logfile */
 +if (nr_of_ports_8021x + parseInt("$ExpectedUplinks") == nr_of_ports_available)
 +{
 + cli.trace("Everything Secure on " + "$IP_ADDRESS" + ". Number of available Ports is: " + nr_of_ports_available + " and number of 8021x and Uplink Ports is: " + (nr_of_ports_8021x + parseInt("$ExpectedUplinks")));
 +}/* if */
 +else if (nr_of_ports_8021x + parseInt("$ExpectedUplinks") > nr_of_ports_available)
 +{
 + cli.errorLog("Please check UserVariables for expected Uplink! More Ports detected than possible");
 +}/*else*/
 +else
 +{
 + var nr_of_ports_without_8021x = nr_of_ports_available - (nr_of_ports_8021x + parseInt("$ExpectedUplinks"));
 + cli.errorLog("Warning for " + "$IP_ADDRESS" + "! There are " + nr_of_ports_without_8021x + " Ports without 8021x! Number of available Ports is: " + nr_of_ports_available + " and number of 8021x and Uplink Ports is: " + (nr_of_ports_8021x + parseInt("$ExpectedUplinks")));
 }/*else*/ }/*else*/
 </js> </js>
 </code> </code>
omnivista-scripting.1517477389.txt.gz · Zuletzt geändert: 2024/06/09 10:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki