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

Einführung

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.

Python

# $language = "Python"
# $interface = "1.0"
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("Password")
  crt.Screen.Synchronous = False
main()

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:

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten

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

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten

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:

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten

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.

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten

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.

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
Diesen Schaltflächen ist kein Skript beigefügt. Nur Aktionslinie:

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
Einstellung – damit beim Wechsel zu einer Sitzung das erforderliche Panel mit Schaltflächen in den Sitzungseinstellungen geöffnet wird:

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
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.

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten
Wenn Sie die Schaltfläche „Go Cisco“ drücken, wechselt das Bedienfeld zur Cisco-Schaltflächenleiste.

Automatisieren des Eintrags in SecureCRT mithilfe von Skripten

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.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

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.)

Verwendete Quellen.

1. Informationen zum Erstellen von Skripten
2. Skriptbeispiele

Anhang 1: Beispielskripte.


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.

# $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.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

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

Source: habr.com