omnivista-scripting
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
omnivista-scripting [2018/02/01 09:19] – benny-domroese | omnivista-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, | + | 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, |
- | 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: | + | :!: __Hinweis: |
===== Überprüfung der installierten FPGA Version ===== | ===== Überprüfung der installierten FPGA Version ===== | ||
Zeile 33: | Zeile 33: | ||
===== Bedingte Konfiguration, | ===== Bedingte Konfiguration, | ||
- | Das nächste Beispiel beinhaltet eine bedingte Konfiguration. Hier wird eine Liste der mobilen Ports angelegt, und für diese eine bestimmtes Kommando herangezogen. In diesem Fall " | + | Das nächste Beispiel beinhaltet eine bedingte Konfiguration. Hier wird eine Liste der mobilen Ports angelegt, und diese für ein bestimmtes Kommando herangezogen. In diesem Fall " |
< | < | ||
<js> | <js> | ||
Zeile 67: | Zeile 67: | ||
Folgender Code kann genutzt werden, um das Vorhandensein diverser Konfigurationen zu prüfen. | Folgender Code kann genutzt werden, um das Vorhandensein diverser Konfigurationen zu prüfen. | ||
Dafür werden 2 Funktionen definiert, die folgende Parameter erhalten: | Dafür werden 2 Funktionen definiert, die folgende Parameter erhalten: | ||
+ | |||
* Einen regulären Ausdruck nach dem gesucht wird. | * Einen regulären Ausdruck nach dem gesucht wird. | ||
* Ein Kommando in dessen Ausgabe der Ausdruck erwartet wird. | * Ein Kommando in dessen Ausgabe der Ausdruck erwartet wird. | ||
Zeile 145: | Zeile 146: | ||
Das folgende Script überprüft, | Das folgende Script überprüft, | ||
- | Anhand eines Regulären Ausdrucks wird hier mithilfe des Kommandos "show vlan port mobile" | + | Anhand eines Regulären Ausdrucks wird hier mithilfe des Kommandos "show vlan port mobile" |
Aus: | Aus: | ||
Zeile 156: | Zeile 157: | ||
</ | </ | ||
- | 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, | + | 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, |
- | Anbei der JavaScript Code für diese Funtion. | + | Anbei der JavaScript Code für diese Funktion. |
< | < | ||
Zeile 212: | Zeile 213: | ||
</ | </ | ||
Anbei ein Screenshot der Ausgabe, die Hinweise auf unterschiedliche Konfigurationen bietet. | Anbei ein Screenshot der Ausgabe, die Hinweise auf unterschiedliche Konfigurationen bietet. | ||
- | {{ : | + | {{ : |
+ | |||
+ | ===== UNP´s anhand von Vorlagen erstellen ===== | ||
+ | |||
+ | Der nächste Code erstellt ein UNP anhand einer Vorlage (eines vorhandenen UNP). Sofern das UNP bereits existiert, oder die " | ||
+ | |||
+ | < | ||
+ | < | ||
+ | /*@@Script for creating a UNP with usage of an existing " | ||
+ | cli.sendCmd(" | ||
+ | var response_1 = cli.lastResponse(); | ||
+ | var pattern_unp_embedded = / | ||
+ | var pattern_unp_secu = / | ||
+ | if (pattern_unp_secu.test(response_1)==true) | ||
+ | { | ||
+ | cli.trace(" | ||
+ | }/*if*/ | ||
+ | else if (pattern_unp_embedded.test(response_1)==true) | ||
+ | { | ||
+ | var pattern_unp_embedded_vlan = / | ||
+ | var vlan_for_unp_secu = pattern_unp_embedded_vlan.exec(response_1); | ||
+ | |||
+ | cli.sendCmd(" | ||
+ | cli.trace(" | ||
+ | }/*else if*/ | ||
+ | |||
+ | else | ||
+ | { | ||
+ | cli.errorLog(" | ||
+ | }/*else*/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== Ü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" | ||
+ | |||
+ | Die Anzahl der Ports habe ich in diesem Beispiel per "show interfaces status" | ||
+ | |||
+ | Die Anzahl der 802.1x Ports wird erneut mit "show vlan port mobile" | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | /*@@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)/ | ||
+ | { | ||
+ | array.sort(); | ||
+ | for (i=0; | ||
+ | if (a[i]==a[i+1]) | ||
+ | { | ||
+ | a.splice(i, | ||
+ | |||
+ | }/*if*/ | ||
+ | return array.length; | ||
+ | }/* function for removing duplicates */ | ||
+ | |||
+ | /* Check the number of available Ports on the System */ | ||
+ | cli.sendCmd(" | ||
+ | var response_1 = cli.lastResponse(); | ||
+ | var pattern_1 = / | ||
+ | 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 " | ||
+ | |||
+ | /* Check the number of 8021x Ports */ | ||
+ | cli.sendCmd(" | ||
+ | var response_2 = cli.lastResponse(); | ||
+ | var pattern_2 = / | ||
+ | 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(" | ||
+ | { | ||
+ | cli.trace(" | ||
+ | }/* if */ | ||
+ | else if (nr_of_ports_8021x + parseInt(" | ||
+ | { | ||
+ | cli.errorLog(" | ||
+ | }/*else*/ | ||
+ | else | ||
+ | { | ||
+ | var nr_of_ports_without_8021x = nr_of_ports_available - (nr_of_ports_8021x + parseInt(" | ||
+ | cli.errorLog(" | ||
+ | }/*else*/ | ||
+ | </ | ||
+ | </ |
omnivista-scripting.1517476789.txt.gz · Zuletzt geändert: 2024/06/09 10:29 (Externe Bearbeitung)