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:24] – 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 ===== | ===== UNP´s anhand von Vorlagen erstellen ===== | ||
| - | Der nächste Code erstellt ein UNP anhand einer Vorlage (eines vorhandenen | + | Der nächste Code erstellt ein UNP anhand einer Vorlage (eines vorhandenen |
| < | < | ||
| Zeile 241: | Zeile 242: | ||
| { | { | ||
| cli.errorLog(" | cli.errorLog(" | ||
| + | }/*else*/ | ||
| + | </js> | ||
| + | </ | ||
| + | |||
| + | ===== Ü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" | ||
| + | |||
| + | |||
| + | < | ||
| + | <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)/ | ||
| + | { | ||
| + | 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*/ | }/*else*/ | ||
| </js> | </js> | ||
| </ | </ | ||
omnivista-scripting.1517477043.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
