ProHoster > Blog > Verwaltung > Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
Netzwerktechniker stehen oft vor der Aufgabe, bestimmte Fragmente von einem Notizblock in die Konsole zu kopieren/einzufügen. Normalerweise müssen Sie mehrere Parameter kopieren: Benutzername/Passwort und etwas anderes. Durch den Einsatz von Skripten können Sie diesen Prozess beschleunigen. ABER die Aufgaben des Schreibens und Ausführens des Skripts sollten insgesamt weniger Zeit in Anspruch nehmen als die manuelle Konfiguration, da die Skripte sonst nutzlos sind.
Wozu dient dieser Artikel? Dieser Artikel stammt aus der Fast Start-Reihe und zielt darauf ab, Netzwerktechnikern beim Einrichten von Geräten (einzelne Aufgabe) auf mehreren Geräten Zeit zu sparen. Verwendet die SecureCRT-Software und integrierte Skriptausführungsfunktionen. Inhalt
Das SecureCRT-Programm verfügt standardmäßig über einen integrierten Skriptausführungsmechanismus. Wozu dienen Terminalskripte?
Automatisierte E/A und minimale E/A-Validierung.
Beschleunigen Sie die Ausführung von Routineaufgaben, indem Sie die Pausen zwischen den Geräteeinstellungen reduzieren. (De-facto-Reduzierung der zeitbedingten Pausen zum Ausführen von Kopier-/Past-Aktionen auf derselben Hardware, wobei 3 oder mehr Befehlsfragmente auf die Hardware angewendet werden müssen.)
Dieses Dokument umfasst die Aufgaben:
Erstellung einfacher Skripte.
Ausführen von Skripten auf SecureCRT.
Beispiele für die Verwendung einfacher und erweiterter Skripte. (Üben Sie aus dem wirklichen Leben.)
Erstellung einfacher Skripte.
Die einfachsten Skripte verwenden nur zwei Befehle: Send und WaitForString. Diese Funktionalität reicht für 90 % (oder mehr) der ausgeführten Aufgaben aus.
Skripte können in Python, JS, VBS (Visual Basic), Perl usw. funktionieren.
Normalerweise eine Datei mit der Erweiterung „*.py“
VBS
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.Screen.Synchronous = True
crt.Screen.Send vbcr
crt.Screen.WaitForString "name"
crt.Screen.Send "cisco" & vbcr
crt.Screen.WaitForString "assword"
crt.Screen.Send "cisco" & vbcr
crt.Screen.Synchronous = False
End Sub
Normalerweise eine Datei mit der Erweiterung „*.vbs“
Erstellen Sie ein Skript mithilfe eines Skripteintrags.
Ermöglicht Ihnen, den Prozess des Schreibens eines Skripts zu automatisieren. Sie beginnen mit dem Schreiben eines Drehbuchs. SecureCRT zeichnet die Befehle und die darauffolgende Hardware-Reaktion auf und zeigt Ihnen das fertige Skript an.
A. Beginnen Sie mit dem Schreiben des Skripts:
SecureCRT-Menü => Skript => Aufzeichnungsskript starten
B. Führen Sie Aktionen mit der Konsole aus (führen Sie Konfigurationsschritte in der CLI aus).
V. Schreiben Sie das Skript fertig:
SecureCRT-Menü => Skript => Skript zur Aufzeichnung stoppen…
Speichern Sie die Skriptdatei.
Beispiel für ausgeführte Befehle und gespeichertes Skript:
Ausführen von Skripten auf SecureCRT.
Nach dem Erstellen/Bearbeiten des Skripts stellt sich natürlich die Frage: Wie wendet man das Skript an?
Es gibt verschiedene Möglichkeiten:
Manuelle Ausführung über das Skriptmenü
Automatischer Start nach Verbindung (Anmeldeskript)
Automatische Anmeldung ohne Verwendung eines Skripts
Manuelles Auslösen mit einer Schaltfläche in SecureCRT (eine Schaltfläche muss noch erstellt und zu SecureCRT hinzugefügt werden)
Manuelle Ausführung über das Skriptmenü
SecureCRT-Menü => Skript => Ausführen…
- Die letzten 10 Skripte werden gespeichert und stehen für den Schnellstart zur Verfügung:
SecureCRT-Menü => Skript => 1 „Skriptdateiname“
SecureCRT-Menü => Skript => 2 „Skriptdateiname“
SecureCRT-Menü => Skript => 3 „Skriptdateiname“
SecureCRT-Menü => Skript => 4 „Skriptdateiname“
SecureCRT-Menü => Skript => 5 „Skriptdateiname“
Automatischer Start nach Verbindung (Anmeldeskript)
Für die gespeicherte Sitzung werden automatische Protokollierungsskripteinstellungen konfiguriert: Verbindung => Anmeldeaktionen => Anmeldeskript
Automatische Anmeldung ohne Verwendung eines Skripts
Es ist möglich, den Benutzernamen und das Passwort automatisch einzugeben, ohne ein Skript zu schreiben, indem nur die integrierte Funktionalität von SecureCRT verwendet wird. In den Verbindungseinstellungen „Verbindung“ => Anmeldeaktionen => Anmeldung automatisieren – Sie müssen mehrere Bündel ausfüllen – also die Paare: „Erwarteter Text“ + „An diesen Text gesendete Zeichen“. Es kann viele solcher Paare geben. (Beispiel: Das erste Paar wartet auf den Benutzernamen, das zweite Paar wartet auf das Passwort, das dritte Paar wartet auf die Eingabeaufforderung für den privilegierten Modus und das vierte Paar wartet auf das Passwort für den privilegierten Modus.)
Beispiel für die automatische Anmeldung bei Cisco ASA:
Manuelles Auslösen mit einer Schaltfläche in SecureCRT (eine Schaltfläche muss noch erstellt und zu SecureCRT hinzugefügt werden)
In SecureCRT können Sie einer Schaltfläche ein Skript zuweisen. Die Schaltfläche wird einem speziell dafür erstellten Panel hinzugefügt.
A. Hinzufügen eines Panels zur Schnittstelle: SecureCRT-Menü => Ansicht => Schaltflächenleiste
B. Fügen Sie dem Bedienfeld eine Schaltfläche und ein Skript hinzu. – Klicken Sie mit der rechten Maustaste auf die Schaltflächenleiste und wählen Sie „Neue Schaltfläche…“ aus dem Kontextmenü.
V. Wählen Sie im Dialogfeld „Map-Schaltfläche“ im Feld „Aktion“ die Aktion (Funktion) „Skript ausführen“ aus.
Geben Sie eine Beschriftung für die Schaltfläche an. Die Farbe für das Schaltflächensymbol. Beenden Sie die Einstellungen, indem Sie auf OK klicken.
Hinweis:
Das Bedienfeld mit Tasten bietet eine sehr nützliche Funktionalität.
1. Wenn Sie sich bei einer bestimmten Sitzung anmelden, können Sie angeben, welches Panel standardmäßig auf dieser Registerkarte geöffnet werden soll.
2. Es ist möglich, vordefinierte Aktionen für Standardaktionen mit Geräten festzulegen: Show Show Version, Show Running-Config, Save Configuration.
Diesen Schaltflächen ist kein Skript beigefügt. Nur Aktionslinie:
Einstellung – damit beim Wechsel zu einer Sitzung das erforderliche Panel mit Schaltflächen in den Sitzungseinstellungen geöffnet wird:
Für den Kunden ist es sinnvoll, individuelle Skripte für die Anmeldung einzurichten und das Panel mit häufigen Befehlen für den Anbieter aufzurufen.
Wenn Sie die Schaltfläche „Go Cisco“ drücken, wechselt das Bedienfeld zur Cisco-Schaltflächenleiste.
Beispiele für die Verwendung einfacher und erweiterter Skripte. (Üben Sie aus dem wirklichen Leben.)
Einfache Skripte reichen für fast alle Gelegenheiten. Aber einmal musste ich das Skript etwas komplizieren, um die Arbeit zu beschleunigen. Diese Komplikation forderte einfach zusätzliche Daten in einem Dialogfeld vom Benutzer an.
Anfordern von Daten vom Benutzer über ein Dialogfeld
Ich hatte 2 im Datenanforderungsskript. Dies ist der Hostname und das 4. Oktett der IP-Adresse. Um diese Aktion auszuführen, habe ich gegoogelt, wie das geht, und sie auf der offiziellen Website von SecureCRT (vandyke) gefunden. - Die Funktionalität heißt Eingabeaufforderung.
In diesem Teil des Skripts wurden der Hostname und die Nummern ab dem letzten Oktett abgefragt. Da waren es 15 Ausrüstungsgegenstände. Und die Daten wurden in einer Tabelle dargestellt, dann habe ich die Werte aus der Tabelle kopiert und in die Dialogfelder eingefügt. Darüber hinaus funktionierte das Drehbuch unabhängig.
FTP-Kopieren auf Netzwerkgeräte.
Dieses Skript hat mein Befehlsfenster (Shell) gestartet und Daten über FTP kopiert. Schließen Sie am Ende die Sitzung. Es ist nicht möglich, Notepad hierfür zu verwenden, da das Kopieren sehr lange dauert und die Daten im FTP-Puffer nicht so lange gespeichert werden:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("ftp 192.168.1.1r")
crt.Screen.WaitForString("Name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("binaryr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
Eingabe von Benutzername/Passwort über ein Skript
Bei einem Kunden wurde der direkte Zugriff auf Netzwerkgeräte gesperrt. Der Zugang zu den Geräten war möglich, indem man sich zunächst mit dem Standard-Gateway und von dort aus mit den daran angeschlossenen Geräten verband. Für die Verbindung wurde der in die IOS-/Hardware-Software integrierte SSH-Client verwendet. Dementsprechend wurden in der Konsole der Benutzername und das Passwort abgefragt. Mit dem folgenden Skript wurden Benutzername und Passwort automatisch eingegeben:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("snmpadminr")
crt.Screen.WaitForString("assword:")
crt.Screen.Send("Passwordr")
crt.Screen.Synchronous = False
main()
Hinweis: Es gab zwei Skripte: eines für das Administratorkonto, das zweite für das eSIGHT-Konto.
Skript mit der Möglichkeit, Daten während der Skriptausführung direkt anzuhängen.
Die Aufgabe bestand darin, auf allen Netzwerkgeräten eine statische Route hinzuzufügen. Das Gateway zum Internet war jedoch auf jedem Gerät unterschiedlich (und unterschied sich vom Standard-Gateway). Das folgende Skript zeigte die Routing-Tabelle an, wechselte in den Konfigurationsmodus, schrieb den Befehl nicht bis zum Ende (die IP-Adresse des Gateways zum Internet) – ich habe diesen Teil hinzugefügt. Nachdem ich die Eingabetaste gedrückt hatte, fuhr das Skript mit der Ausführung des Befehls fort.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
crt.Screen.WaitForString("#")
crt.Screen.Send("show run | inc ip router")
crt.Screen.WaitForString("#")
crt.Screen.Send("conf tr")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("endr")
crt.Screen.WaitForString("#")
crt.Screen.Send("copy run star")
crt.Screen.WaitForString("[startup-config]?")
crt.Screen.Send("r")
crt.Screen.WaitForString("#")
crt.Screen.Send("exitr")
crt.Screen.Synchronous = False
main()
In diesem Skript wird in der Zeile: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252") die IP-Adresse des Gateways nicht hinzugefügt und es gibt kein Wagenrücklaufzeichen. Das Skript wartet auf die nächste Zeile mit den Zeichen „(config) #“. Diese Zeichen erschienen, nachdem ich die IP-Adresse eingegeben und eingegeben hatte.
FAZIT:
Beim Schreiben und Ausführen eines Skripts muss die Regel beachtet werden: Die Zeit zum Schreiben eines Skripts und zum Ausführen eines Skripts sollte nie größer sein als die Zeit, die theoretisch für die manuelle Erledigung derselben Arbeit (Kopieren/Einfügen aus einem Notizblock, Schreiben und Debuggen) aufgewendet wird ein Playbook für Ansible, das Python-Skripte schreibt und debuggt). Das heißt, die Verwendung des Skripts sollte Zeit sparen und keine Zeit mit der einmaligen Automatisierung von Prozessen verschwenden (d. h. wenn das Skript einzigartig ist und es keine Wiederholungen mehr gibt). Aber wenn das Skript einzigartig ist und die Automatisierung mit dem Skript und das Schreiben/Debuggen des Skripts weniger Zeit in Anspruch nimmt als auf andere Weise (ansible, Befehlsfenster), dann ist das Skript die beste Lösung.
Debuggen eines Skripts. Das Skript wächst nach und nach, das Debuggen findet beim Einlaufen auf dem ersten, zweiten und dritten Gerät statt, und beim vierten wird das Skript höchstwahrscheinlich voll funktionsfähig sein.
Das Ausführen eines Skripts (durch Eingabe von Benutzername und Passwort) mit der Maus ist normalerweise schneller als das Kopieren von Benutzername und Passwort aus einem Notizblock. Aber aus Sicherheitsgründen nicht sicher.
Ein weiteres (reales) Beispiel bei der Verwendung eines Skripts: Sie haben keinen direkten Zugriff auf Netzwerkgeräte. Es besteht jedoch die Notwendigkeit, alle Netzwerkgeräte zu konfigurieren (in das Überwachungssystem einbinden, einen zusätzlichen Benutzernamen/Passwort/snmpv3-Benutzername/Passwort konfigurieren). Den Zugriff erhalten Sie, wenn Sie zum Core-Switch gehen und von dort aus SSH für andere Geräte öffnen. Warum können Sie Ansible nicht verwenden? - Weil wir auf eine Begrenzung der Anzahl zulässiger gleichzeitiger Sitzungen auf Netzwerkgeräten stoßen (Zeilen-VTY 0 4, Benutzerschnittstellen-VTY 0 4) (eine andere Frage ist, wie man verschiedene Geräte in Ansible mit demselben SSH-First-Hop startet).
Das Skript reduziert die Zeit bei langen Vorgängen – zum Beispiel beim Kopieren von Dateien per FTP. Nachdem der Kopiervorgang abgeschlossen ist, beginnt das Skript sofort mit der Arbeit. Eine Person muss das Ende des Kopiervorgangs sehen, dann das Ende des Kopiervorgangs erkennen und dann die entsprechenden Befehle eingeben. Das Skript macht es objektiv schneller.
Skripte sind dort anwendbar, wo es nicht möglich ist, Tools zur Massendatenbereitstellung zu verwenden: Konsole. Oder wenn einige der Daten für das Gerät eindeutig sind: Hostname, Verwaltungs-IP-Adresse. Oder wenn Sie ein Programm schreiben und debuggen, ist es schwieriger, als Daten hinzuzufügen, die von der Ausrüstung empfangen werden, während das Skript ausgeführt wird. - Ein Beispiel mit einem Skript zum Vorgeben einer Route, wenn jedes Gerät eine eigene IP-Adresse des Internetproviders hat. (Meine Kollegen haben solche Skripte geschrieben – als die DMVPN-Spoke über 3 lag. Es war notwendig, die DMVPN-Einstellungen zu ändern).
Fallstudie: Konfigurieren der Anfangseinstellungen auf einem neuen Switch mithilfe der Konsolenports:
A. Das Konsolenkabel an das Gerät angeschlossen.
B. Führen Sie das Skript aus
B. Auf die Ausführung des Skripts gewartet
D. Stecken Sie das Konsolenkabel in das nächste Gerät.
E. Wenn der Schalter nicht der letzte ist, fahren Sie mit Schritt B fort.
Als Ergebnis der Arbeit des Drehbuchs:
Das anfängliche Passwort wird auf dem Gerät festgelegt.
Benutzername eingegeben
Die eindeutige IP-Adresse des Geräts wird eingetragen.
PS: Die Operation musste wiederholt werden. Weil Standard-SSH nicht konfiguriert/deaktiviert wurde. (Ja, das ist mein Fehler.)
Ein Beispiel für ein langes Skript mit zwei Abfragen: Hostname und IP-Adresse. Es wurde für die Voreinstellung von Geräten über die Konsole (9600 Baud) entwickelt. Und auch um den Anschluss von Geräten an das Netzwerk vorzubereiten.
Solche Skripte werden normalerweise nicht benötigt, aber die Ausrüstungsmenge beträgt 15 Stück. Ermöglicht eine schnellere Einrichtung. Mit dem SecureCRT-Befehlsfenster ließ sich das Gerät schneller einrichten.
Ein Konto für SSH einrichten.
Ein anderes Beispiel. Die Konfiguration erfolgt ebenfalls über die Konsole.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("r")
crt.Screen.WaitForString("name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString(">")
crt.Screen.Send("sysr")
crt.Screen.Send("stelnet server enabler")
crt.Screen.Send("aaar")
crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
crt.Screen.Send("quitr")
crt.Screen.Send("user-interface vty 0 4r")
crt.Screen.Send("authentication-mode aaar")
crt.Screen.Send("quitr")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
Über SecureCRT:Kostenpflichtige Software: ab 99 $ (der niedrigste Preis gilt nur für SecureCRT für ein Jahr) Offiziellen Website
Es wird einmalig eine Softwarelizenz mit Support (für Aktualisierungen) erworben, anschließend wird die Software mit dieser Lizenz zeitlich unbegrenzt genutzt.
Funktioniert auf Mac OS X- und Windows-Betriebssystemen.
Es gibt Skriptunterstützung (dieser Artikel)
Es gibt Befehlsfenster
Seriell/Telnet/SSH1/SSH2/Shell-Betriebssystem