Automatisieren Sie die Eingabe in SecureCRT mithilfe von Skripten

Netzwerktechniker haben häufig die Aufgabe, bestimmte Fragmente vom Editor auf die Konsole zu kopieren / einzufügen. Normalerweise müssen Sie einige Parameter kopieren: Benutzername / Passwort und etwas anderes. Durch die Verwendung von Skripten können Sie diesen Prozess beschleunigen. ABER Aufgaben des Skriptschreibens und der Skriptausführung sollten insgesamt weniger Zeit in Anspruch nehmen als die manuelle Konfiguration, da sonst Skripte unbrauchbar sind.

Wofür ist dieser Artikel? Dieser Artikel stammt aus dem Schnellstartzyklus und soll Netzwerkingenieuren beim Einrichten von Geräten (eine Aufgabe) auf mehreren Geräten Zeit sparen. Es verwendet die SecureCRT-Software und integrierte Skriptausführungsfunktionen.



Einführung


Eine Skriptausführungs-Engine ist sofort in das SecureCRT-Programm integriert. Warum brauchen wir Skripte im Terminal:

  • Automatisierte Ein- und Ausgabe sowie minimale Überprüfung der Ein- / Ausgabekorrektheit.
  • Beschleunigung der Ausführung von Routineaufgaben - Reduzierung der Pausen zwischen den Geräteeinstellungen. (De-facto-Reduzierung von Pausen, die durch die Zeit für das Kopieren / vergangene Aktionen auf demselben Gerät verursacht werden, mit 3 oder mehr Fragmenten von Befehlen zur Verwendung auf dem Gerät.)

Dieses Dokument beschreibt die Aufgaben:

  • Einfache Skripte erstellen.
  • Ausführen von Skripten auf SecureCRT.
  • Beispiele für die Verwendung einfacher und erweiterter Skripte. (Übe aus dem wirklichen Leben.)


Einfache Skripte erstellen.


Die einfachsten Skripte verwenden nur zwei Send- und WaitForString-Befehle. 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. verwendet werden.

Python


# $language = "Python"
# $interface = "1.0"
def main():
  crt.Screen.Synchronous = True
  crt.Screen.Send("\r")
  crt.Screen.WaitForString("name")
  crt.Screen.Send("admin\r")
  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 eines Skripts durch Schreiben eines Skripts.


Ermöglicht das Automatisieren des Schreibens eines Skripts. Sie starten die Skriptaufzeichnung. SecureCRT zeichnet die Befehle und die nachfolgende Antwort des Geräts auf und zeigt ein vorgefertigtes Skript an.

und. Skriptaufzeichnung
ausführen : Menü SecureCRT => Skript => Aufzeichnung starten Skript
b. Führen Sie Aktionen mit der Konsole aus (führen Sie die Konfigurationsschritte in der CLI aus).
beim. So beenden Sie die Aufzeichnung des Skripts:
Menü SecureCRT => Skript => Aufzeichnung beenden Skript ...
Speichern Sie die Datei mit dem Skript.

Beispiel für ausgeführte Befehle und gespeichertes Skript:



Ausführen von Skripten auf SecureCRT.


Nach dem Erstellen / Bearbeiten des Skripts stellt sich eine logische Frage: Wie wird das Skript angewendet?
Es gibt verschiedene Möglichkeiten:

  • Manueller Start über das Skript-Menü
  • Automatischer Start nach Verbindung (Anmeldeskript)
  • Automatische Anmeldung ohne Verwendung eines Skripts
  • Manueller Start mit einer Schaltfläche in SecureCRT (eine Schaltfläche muss noch erstellt und zu SecureCRT hinzugefügt werden)


Manueller Start über das Skript-Menü


SecureCRT-Menü => Skript => Ausführen ...
- Die letzten 10 Skripte werden
gespeichert und können schnell gestartet werden: SecureCRT-Menü => Skript => 1 "
Skriptdateiname " SecureCRT-Menü => Skript => 2 "
Skriptdateiname " SecureCRT-Menü => Skript => 3
Menü "Dateiname mit Skript" SecureCRT => Skript => 4
Menü "Dateiname mit Skript" Menü SecureCRT => Skript => 5 "Dateiname mit Skript"

Automatischer Start nach Verbindung (Anmeldeskript)


Die Einstellungen für das automatische Protokollierungsskript werden für die gespeicherte Sitzung konfiguriert: Verbindung => Anmeldeaktionen => Anmeldeskript



Automatische Anmeldung ohne Verwendung eines Skripts


Es ist möglich, automatisch einen Kennwort-Benutzernamen einzugeben, ohne ein Skript zu schreiben, das nur die integrierte SecureCRT-Funktionalität verwendet. In den Verbindungseinstellungen "Verbindung" => Anmeldeaktionen => Anmeldung automatisieren - Sie müssen mehrere Bundles ausfüllen - die Paare umfassen: "Erwarteter Text" + "Zeichen an diesen Text gesendet" Es kann viele solcher Paare geben. (Beispiel: 1. Paar wartet auf einen Benutzernamen, zweites wartet auf ein Passwort, drittes wartet auf eine Einladung in den privilegierten Modus, viertes Passwort aus dem privilegierten Modus.)

Beispiel für die automatische Anmeldung bei Cisco ASA:



Manueller Start mit einer Schaltfläche in SecureCRT (eine Schaltfläche muss noch erstellt und zu SecureCRT hinzugefügt werden)


In SecureCRT können Sie eine Skriptschaltfläche angeben. Die Schaltfläche wird einem speziell für diesen Zweck erstellten Bereich hinzugefügt.

und. Fügen Sie der Benutzeroberfläche ein Bedienfeld hinzu: SecureCRT-Menü => Ansicht => Schaltflächenleiste
b. Fügen Sie dem Bedienfeld eine Schaltfläche hinzu und fügen Sie ein Skript hinzu. - Klicken Sie mit der rechten Maustaste auf die Schaltflächenleiste und wählen Sie im Kontextmenü "Neue Schaltfläche ...".
beim. Wählen Sie im Dialogfeld "Map Button" im Feld "Action" die Aktion (Funktion) "Run Script".
Geben Sie die Signatur für die Schaltfläche an. Farbe für das Schaltflächensymbol. Beenden Sie die Einstellungen, indem Sie auf OK klicken.



Hinweis:

Die Schaltflächenleiste ist eine sehr nützliche Funktion.

1. Bei der Anmeldung kann einer bestimmten Sitzung angegeben werden, welches Fenster auf dieser Registerkarte standardmäßig geöffnet werden soll.

2. Bei Standardaktionen mit Geräten können vordefinierte Aktionen festgelegt werden: show show version, show running-config, save the configuration.


An diese Schaltflächen ist kein Skript angehängt. Nur Zeile mit Aktionen:


Einstellungen - damit beim Wechseln zu einer Sitzung das erforderliche Fenster mit Schaltflächen in den Sitzungseinstellungen geöffnet wird:


Für den Kunden ist es sinnvoll, einzelne Skripte für die Anmeldung zu konfigurieren und mit häufigen Befehlen für den Anbieter zum Bedienfeld zu wechseln.


Wenn Sie auf die Schaltfläche Cisco Go klicken, wechselt das Bedienfeld zur Cisco-Schaltflächenleiste.



Beispiele für die Verwendung einfacher und erweiterter Skripte. (Übe aus dem wirklichen Leben.)


Einfache Skripte reichen für fast alle Gelegenheiten aus. Aber einmal musste ich das Skript etwas komplizieren - um die Arbeit zu beschleunigen. Diese Komplikation forderte vom Benutzer nur zusätzliche Daten im Dialogfeld an.

Anfordern von Daten von einem 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 und sie auf der offiziellen Website von SecureCRT (vandyke) gefunden. - Die Funktionalität wird als Eingabeaufforderung bezeichnet.

	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(" 23\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("\r") 

Dieser Teil des Skripts forderte den Hostnamen und die Nummern des letzten Oktetts an. Da war die Ausstattung 15 Stück. Und die Daten wurden in der Tabelle dargestellt, dann habe ich die Werte aus der Tabelle kopiert und in die Dialogfelder eingefügt. Weiterhin arbeitete das Skript unabhängig.

FTP-Kopieren auf Netzwerkgeräte.


Dieses Skript hat mein Befehlsfenster (Shell) gestartet und die Daten über FTP kopiert. Nach Abschluss schloss er die Sitzung. Es ist unmöglich, den Editor dafür zu verwenden, da das Kopieren sehr lange dauert und die Daten im FTP-Puffer nicht so oft 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.1\r")
	crt.Screen.WaitForString("Name")
	crt.Screen.Send("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("binary\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("put S5720LI-V200R011SPH016.pat\r")
	crt.Screen.WaitForString("ftp")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


Eingabe von Benutzername / Passwort über ein Skript


Bei einem Kunden wurde der Zugang zu Netzwerkgeräten direkt geschlossen. Sie können auf das Gerät zugreifen, indem Sie zuerst eine Verbindung zum Standard-Gateway und dann von dort aus eine Verbindung zu dem daran angeschlossenen Gerät herstellen. Für die Verbindung verwendeten wir den in IOS / Software-Geräten integrierten SSH-Client. Dementsprechend wurden der Benutzername und das Passwort in der Konsole angefordert. Mit dem folgenden Skript wurden der Benutzername und das 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("snmpadmin\r")
	crt.Screen.WaitForString("assword:")
	crt.Screen.Send("Password\r")
	crt.Screen.Synchronous = False
main()

Hinweis: Das Skript war 2. Eines für das Administratorkonto, das zweite für das eSIGHT-Konto.

Ein Skript mit der Möglichkeit, Daten während der Skriptausführung direkt anzuhängen.


Die Aufgabe bestand darin, allen Netzwerkgeräten eine statische Route hinzuzufügen. Das Internet-Gateway auf jedem Gerät hatte jedoch ein eigenes (und es unterschied sich vom Standard-Gateway). Das folgende Skript zeigte die Routing-Tabelle an, trat in den Konfigurationsmodus ein und führte den Befehl (IP-Adresse des Internet-Gateways) nicht vollständig aus. Ich habe diesen Teil hinzugefügt. Nachdem ich die Eingabetaste gedrückt hatte, führte das Skript den Befehl weiter aus.

# $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-reklama\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("show run | inc ip route\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("conf t\r")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
	crt.Screen.WaitForString("(config)#")
	crt.Screen.Send("end\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("copy run sta\r")
	crt.Screen.WaitForString("[startup-config]?")
	crt.Screen.Send("\r")
	crt.Screen.WaitForString("#")
	crt.Screen.Send("exit\r")
	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 werden angezeigt, nachdem ich die IP-Adresse eingegeben und eingegeben habe.

Fazit:


Beim Schreiben und Ausführen eines Skripts muss unbedingt die Regel beachtet werden: Die Zeit zum Schreiben des Skripts und des Skripts sollte niemals länger sein als die theoretisch für die manuelle Ausführung derselben Arbeit aufgewendete Zeit (Kopieren / Einfügen aus dem Editor, Schreiben und Debuggen eines Playbooks für Ansible, Schreiben und Debuggen Python-Skript). Das heißt, die Verwendung eines Skripts sollte Zeit sparen und keine Zeit für die einmalige Automatisierung von Prozessen verschwenden (d. H. Wenn das Skript eindeutig ist und keine Wiederholungen mehr auftreten). Wenn das Skript jedoch eindeutig ist und die Automatisierung mit dem Skript und das Schreiben / Debuggen des Skripts weniger Zeit in Anspruch nimmt als die Ausführung auf andere Weise (ansible, Befehlsfenster), ist das Skript die beste Lösung.
Debuggen eines Skripts. Das Skript wächst allmählich, das Debuggen erfolgt auf einem Lauf auf dem ersten, zweiten und dritten Gerät, und ab dem vierten Gerät ist das Skript höchstwahrscheinlich voll funktionsfähig.

Das Ausführen eines Skripts (mit Benutzername + Passwort) mit der Maus ist normalerweise schneller als das Kopieren von Benutzername und Passwort aus dem Editor. Aber aus Sicherheitsgründen nicht sicher.
Ein weiteres (reales) Beispiel bei der Verwendung eines Skripts: Sie haben keinen direkten Zugriff auf Netzwerkgeräte. Es müssen jedoch alle Netzwerkgeräte konfiguriert werden (zum Überwachungssystem hinzufügen, zusätzlichen Benutzernamen / Kennwort / snmpv3Benutzername / Kennwort konfigurieren). Wenn Sie zum Core-Switch gehen, haben Sie Zugriff darauf. Öffnen Sie SSH zu anderen Geräten. Warum können Sie Ansible nicht verwenden. - Da die Anzahl der zulässigen gleichzeitigen Sitzungen auf Netzwerkgeräten (Zeile vty 0 4, Benutzeroberfläche vty 0 4) begrenzt ist (eine andere Frage ist, wie verschiedene Geräte in Ansible mit demselben ersten SSH-Hop gestartet werden können).

Das Skript reduziert die Zeit bei langen Vorgängen, z. B. beim Kopieren von Dateien über FTP. Nachdem der Kopiervorgang abgeschlossen ist, funktioniert das Skript sofort. Eine Person muss das Ende des Kopierens sehen, dann das Ende des Kopierens erkennen und dann die entsprechenden Befehle eingeben. Das Skript erledigt dies objektiv schneller.

Die Skripte sind anwendbar, wenn es unmöglich ist, die Mittel zur Bereitstellung von Massendaten 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 es debuggen, ist es schwieriger, als Daten hinzuzufügen, die vom Gerät empfangen werden, während das Skript ausgeführt wird. - Ein Beispiel mit einem Skript zum Verschreiben einer Route, wenn jedes Gerät eine eigene IP-Adresse des Internetproviders hat. (Meine Kollegen haben solche Skripte geschrieben - als DMVPN für dreihundert sprach. Es war notwendig, die DMVPN-Einstellungen zu ändern).

Fallstudie: Erste Einstellungen an einem neuen Switch über Konsolenports:

A. Ich habe das Konsolenkabel in das Gerät eingeführt.
B. Das Skript gestartet.
B. Warten, bis das Skript abgeschlossen ist.
G. Drew das Konsolenkabel zum nächsten Gerät.
D. Wenn der Wechsel nicht der letzte ist, fahren Sie mit Schritt B fort.

Gesamt basierend auf den Ergebnissen des Skripts:

  • Das Gerät hat ein anfängliches Passwort.
  • Benutzername eingegeben
  • gab eine eindeutige IP-Adresse für das Gerät ein.

PS Ich musste die Operation wiederholen. Weil ssh standardmäßig nicht konfiguriert / ausgeschaltet war. (Ja, das ist mein Fehler.)

Gebrauchte Quellen.


1. Informationen zum Erstellen von Skripten
2. Beispiele für Skripte

Anhang 1: Beispiele für Skripte.



Ein Beispiel für ein langes Skript mit zwei Anforderungen: Hostname und IP-Adresse. Es wurde für die Voreinstellung von Geräten über die Konsole (9600 Baud) erstellt. 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("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.Send("sys\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1\r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip address\r")
	crt.Screen.Send("shutdown\r")
	crt.Screen.Send("vlan 100\r")
	crt.Screen.Send(" description description1\r")
	crt.Screen.Send(" name description1\r")
	crt.Screen.Send("vlan 110\r")
	crt.Screen.Send(" description description2\r")
	crt.Screen.Send(" name description2\r")
	crt.Screen.Send("vlan 120\r")
	crt.Screen.Send(" description description3\r")
	crt.Screen.Send(" name description3\r")
	crt.Screen.Send("vlan 130\r")
	crt.Screen.Send(" description description4\r")
	crt.Screen.Send(" name description4\r")
	crt.Screen.Send("vlan 140\r")
	crt.Screen.Send(" description description5\r")
	crt.Screen.Send(" name description5\r")
	crt.Screen.Send("vlan 150\r")
	crt.Screen.Send(" description description6\r")
	crt.Screen.Send(" name description6\r")
	crt.Screen.Send("vlan 160\r")
	crt.Screen.Send(" description description7\r")
	crt.Screen.Send(" name description7\r")
	crt.Screen.Send("vlan 170\r")
	crt.Screen.Send(" description description8\r")
	crt.Screen.Send(" name description8\r")               
	crt.Screen.Send("vlan 180\r")
	crt.Screen.Send(" description description9\r")
	crt.Screen.Send(" name description9\r")
	crt.Screen.Send("vlan 200\r")
	crt.Screen.Send(" description description10\r")
	crt.Screen.Send(" name description10\r")
	crt.Screen.Send("vlan 300\r")
	crt.Screen.Send(" description description11\r")
	crt.Screen.Send(" name description11\r")
	crt.Screen.Send("quit\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configuration\r")
	crt.Screen.Send("region-name desc\r")
	crt.Screen.Send("active region-configuration\r")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("stp instance 0 priority 57344\r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Users\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybrid\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printers\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type access\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enable\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021p\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplink\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunk\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action block\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trap\r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2\r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134\r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254\r")
	crt.Screen.Send("interface Vlanif 200\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]")
	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(" 24\r")
	crt.Screen.Send("quit\r")
	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 Menge an Ausrüstung beträgt 15. Erlaubt, das Setup zu beschleunigen. Die weitere Konfiguration der Hardware war mit dem SecureCRT-Befehlsfenster schneller.

Kontoeinrichtung für ssh.


Ein anderes Beispiel. Setup auch ü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("admin\r")
	crt.Screen.WaitForString("Password:")
	crt.Screen.Send("Password\r")
	crt.Screen.WaitForString(">")
	crt.Screen.Send("sys\r")
	crt.Screen.Send("stelnet server enable\r")
	crt.Screen.Send("aaa\r")
	crt.Screen.Send("local-user admin service-type terminal ftp http ssh\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("user-interface vty 0 4\r")
	crt.Screen.Send("authentication-mode aaa\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Send("quit\r")
	crt.Screen.Synchronous = False
main()


Über SecureCRT:
: 99$ ( SecureCRT )

1 , ( ), .

Mac OS X Windows.

( )
Command Window
Serial/Telnet/SSH1/SSH2/Shell

All Articles