Automatisering van invoer in SecureCRT met behulp van scripts

Netwerkengineers staan ​​vaak voor de taak om bepaalde fragmenten van een kladblok naar de console te kopiëren/plakken. Meestal moet u verschillende parameters kopiëren: gebruikersnaam/wachtwoord en iets anders. Door het gebruik van scripts kunt u dit proces versnellen. MAAR de taken van het schrijven van het script en het uitvoeren van het script zouden in totaal minder tijd moeten kosten dan handmatige configuratie, anders zijn de scripts nutteloos.

Waar is dit artikel voor? Dit artikel komt uit de Fast Start-serie en is bedoeld om netwerkengineers tijd te besparen bij het instellen van apparatuur (enkele taak) op meerdere apparaten. Maakt gebruik van SecureCRT-software en ingebouwde scriptuitvoeringsfunctionaliteit.

Inhoud

Introductie

Het SecureCRT-programma heeft standaard een ingebouwd scriptuitvoeringsmechanisme. Waar zijn terminalscripts voor?

  • Geautomatiseerde I/O en minimale I/O-validatie.
  • Versnel de uitvoering van routinetaken - verminder pauzes tussen apparatuurinstellingen. (De facto vermindering van pauzes veroorzaakt door tijd om kopieer/past-acties op dezelfde hardware uit te voeren, met 3 of meer opdrachtfragmenten die op hardware moeten worden toegepast.)

Dit document behandelt de taken:

  • Maken van eenvoudige scripts.
  • Scripts uitvoeren op SecureCRT.
  • Voorbeelden van het gebruik van eenvoudige en geavanceerde scripts. (Oefen uit het echte leven.)

Maken van eenvoudige scripts.

De eenvoudigste scripts gebruiken slechts twee opdrachten, Send en WaitForString. Deze functionaliteit is voldoende voor 90% (of meer) van de uitgevoerde taken.

Scripts kunnen werken in Python, JS, VBS (Visual Basic), Perl, etc.

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

Meestal een bestand met de extensie "*.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

Meestal een bestand met de extensie "*.vbs"

Maak een script met behulp van een scriptinvoer.

Hiermee kunt u het proces van het schrijven van een script automatiseren. Je begint met het schrijven van een script. SecureCRT registreert de opdrachten en de daaropvolgende hardwarereactie en geeft het voltooide script voor u weer.

A. Script schrijven:
SecureCRT-menu => Script => Start opnamescript
B. Acties uitvoeren met de console (configuratiestappen uitvoeren in de CLI).
V. Voltooi het schrijven van het script:
SecureCRT-menu => Script => Opnamescript stoppen...
Sla het scriptbestand op.

Voorbeeld van uitgevoerde opdrachten en opgeslagen script:

Automatisering van invoer in SecureCRT met behulp van scripts

Scripts uitvoeren op SecureCRT.

Na het maken/bewerken van het script rijst een natuurlijke vraag: hoe het script toe te passen?
Er zijn verschillende manieren:

  • Handmatig uitgevoerd vanuit het Script-menu
  • Automatische start na verbinding (aanmeldingsscript)
  • Automatisch inloggen zonder gebruik te maken van een script
  • Handmatig activeren met een knop in SecureCRT (er moet nog een knop worden gemaakt en toegevoegd aan SecureCRT)

Handmatig uitgevoerd vanuit het Script-menu

SecureCRT-menu => Script => Uitvoeren...
- De laatste 10 scripts worden onthouden en zijn beschikbaar voor snelle lancering:
SecureCRT-menu => Script => 1 "Scriptbestandsnaam"
SecureCRT-menu => Script => 2 "Scriptbestandsnaam"
SecureCRT-menu => Script => 3 "Scriptbestandsnaam"
SecureCRT-menu => Script => 4 "Scriptbestandsnaam"
SecureCRT-menu => Script => 5 "Scriptbestandsnaam"

Automatische start na verbinding (aanmeldingsscript)

Instellingen voor automatisch logboekregistratiescript zijn geconfigureerd voor de opgeslagen sessie: Verbinding => Aanmeldingsacties => Aanmeldingsscript

Automatisering van invoer in SecureCRT met behulp van scripts

Automatisch inloggen zonder gebruik te maken van een script

Het is mogelijk om automatisch de gebruikersnaam van het wachtwoord in te voeren zonder een script te schrijven, waarbij alleen gebruik wordt gemaakt van de ingebouwde functionaliteit van SecureCRT. In de verbindingsinstellingen "Verbinding" => Aanmeldingsacties => Automatiseer aanmelding - u moet verschillende bundels invullen - wat de paren betekent: "Verwachte tekst" + "Verzonden tekens naar deze tekst" er kunnen veel van dergelijke paren zijn. (Voorbeeld: 1e paar wacht op gebruikersnaam, tweede paar wacht op wachtwoord, derde paar wacht op prompt voor geprivilegieerde modus, vierde paar op wachtwoord voor geprivilegieerde modus.)

Voorbeeld van automatische aanmelding op Cisco ASA:

Automatisering van invoer in SecureCRT met behulp van scripts

Handmatig activeren met een knop in SecureCRT (er moet nog een knop worden gemaakt en toegevoegd aan SecureCRT)

In SecureCRT kunt u een script toewijzen aan een knop. De knop wordt toegevoegd aan een speciaal hiervoor gemaakt paneel.

A. Een paneel toevoegen aan de interface: SecureCRT Menu => Beeld => Knoppenbalk
B. Voeg een knop toe aan het paneel en voeg een script toe. – Klik met de rechtermuisknop op de knoppenbalk en selecteer “Nieuwe knop…” in het contextmenu.
V. Selecteer in het dialoogvenster "Kaartknop" in het veld "Actie" de actie (functie) "Script uitvoeren".
Geef een bijschrift op voor de knop. De kleur voor het knoppictogram. Voltooi de instellingen door op OK te klikken.

Automatisering van invoer in SecureCRT met behulp van scripts

Opmerking:

Het paneel met knoppen is erg handige functionaliteit.

1. Het is mogelijk om, wanneer u zich aanmeldt bij een specifieke sessie, aan te geven welk paneel standaard moet worden geopend voor dit tabblad.

2. Het is mogelijk om voorgedefinieerde acties in te stellen voor standaardacties met apparatuur: show show version, show running-config, save configuration.

Automatisering van invoer in SecureCRT met behulp van scripts
Aan deze knoppen is geen script gekoppeld. Alleen actielijn:

Automatisering van invoer in SecureCRT met behulp van scripts
Instelling - zodat bij het overschakelen naar een sessie het benodigde paneel met knoppen wordt geopend in de sessie-instellingen:

Automatisering van invoer in SecureCRT met behulp van scripts
Het is logisch dat de klant individuele scripts voor inloggen instelt en naar het paneel gaat met frequente opdrachten voor de leverancier.

Automatisering van invoer in SecureCRT met behulp van scripts
Wanneer u op de Go Cisco-knop drukt, schakelt het paneel over naar de Cisco-knoppenbalk.

Automatisering van invoer in SecureCRT met behulp van scripts

Voorbeelden van het gebruik van eenvoudige en geavanceerde scripts. (Oefen uit het echte leven.)

Eenvoudige scripts zijn voldoende voor bijna alle gelegenheden. Maar ooit moest ik het script een beetje ingewikkelder maken - om het werk te versnellen. Deze complicatie vroeg eenvoudig om aanvullende gegevens in een dialoogvenster van de gebruiker.

Gegevens opvragen bij de gebruiker met behulp van een dialoogvenster

Ik had er 2 in het script voor het aanvragen van gegevens.Dit is de hostnaam en het 4e octet van het IP-adres. Om deze actie uit te voeren - ik googelde hoe het moest en vond het op de officiële website van SecureCRT (vandyke). - de functionaliteit heet prompt.

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

Dit deel van het script vroeg om hostnaam en nummers van het laatste octet. Omdat er 15 apparaten waren. En de gegevens werden gepresenteerd in een tabel, daarna heb ik de waarden uit de tabel gekopieerd en in de dialoogvensters geplakt. Verder werkte het script zelfstandig.

FTP kopiëren naar netwerkapparatuur.

Dit script startte mijn opdrachtvenster (shell) en kopieerde gegevens via FTP. Sluit aan het einde de sessie. Het is onmogelijk om hiervoor kladblok te gebruiken, omdat het kopiëren erg lang duurt en de gegevens in de FTP-buffer niet zo lang bewaard blijven:

# $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()

Gebruikersnaam/wachtwoord invoeren met behulp van een script

Bij één klant was de toegang tot netwerkapparatuur direct afgesloten. Het was mogelijk om toegang te krijgen tot de apparatuur door eerst verbinding te maken met de Default Gateway en van daaruit naar de apparatuur die erop is aangesloten. De ssh-client die is ingebouwd in de IOS/hardwaresoftware werd gebruikt om verbinding te maken. Dienovereenkomstig werden de gebruikersnaam en het wachtwoord gevraagd in de console. Met onderstaand script werden de gebruikersnaam en het wachtwoord automatisch ingevoerd:

# $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()

Opmerking: er waren 2 scripts: één voor het beheerdersaccount en het tweede voor het eSIGHT-account.

Script met de mogelijkheid om direct gegevens toe te voegen tijdens de uitvoering van het script.

De taak was om een ​​statische route toe te voegen aan alle netwerkapparatuur. Maar de gateway naar internet op elk apparaat was anders (en verschilde van de standaardgateway). Het volgende script gaf de routeringstabel weer, ging naar de configuratiemodus, schreef de opdracht niet tot het einde (het IP-adres van de gateway naar internet) - ik heb dit onderdeel toegevoegd. Nadat ik op Enter had gedrukt, bleef het script de opdracht uitvoeren.

# $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 dit script wordt in de regel: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") het IP-adres van de gateway niet toegevoegd en is er geen regelterugloopteken. Het script wacht op de volgende regel met de tekens "(config) #" Deze tekens verschenen nadat ik het ip-adres had ingevoerd en ingevoerd.

conclusie:

Bij het schrijven van een script en het uitvoeren ervan moet de regel worden gevolgd: de tijd voor het schrijven van een script en het uitvoeren van een script mag nooit meer zijn dan de tijd die theoretisch wordt besteed aan het handmatig doen van hetzelfde werk (kopiëren/plakken uit een kladblok, schrijven en debuggen een draaiboek voor weerwort, schrijven en debuggen van python-script). Dat wil zeggen, het gebruik van het script moet tijd besparen en geen tijd verspillen aan eenmalige automatisering van processen (d.w.z. wanneer het script uniek is en er geen herhaling meer zal zijn). Maar als het script uniek is en automatisering met het script en het schrijven/debuggen van het script minder tijd kost dan het op een andere manier te doen (ansible, opdrachtvenster), dan is het script de beste oplossing.
Een script debuggen. Het script groeit geleidelijk, debuggen vindt plaats tijdens de inloop op het eerste, tweede, derde apparaat en tegen het vierde zal het script waarschijnlijk volledig operationeel zijn.

Het uitvoeren van een script (door gebruikersnaam + wachtwoord in te voeren) met de muis is meestal sneller dan het kopiëren van gebruikersnaam en wachtwoord van een kladblok. Maar niet veilig vanuit beveiligingsoogpunt.
Een ander (echt) voorbeeld bij het gebruik van een script: Je hebt geen directe toegang tot netwerkapparatuur. Maar het is nodig om alle netwerkapparatuur te configureren (breng deze naar het monitoringsysteem, configureer een extra gebruikersnaam/wachtwoord/snmpv3gebruikersnaam/wachtwoord). Er is toegang wanneer je naar de Core-switch gaat, van daaruit open je SSH naar andere apparatuur. Waarom kun je Ansible niet gebruiken? - Omdat we tegen een limiet aanlopen op het aantal toegestane gelijktijdige sessies op netwerkapparatuur (lijn vty 0 4, user-interface vty 0 4) (een andere vraag is hoe je verschillende apparatuur in Ansible start met dezelfde SSH first hop).

Het script vermindert de tijd tijdens lange operaties - bijvoorbeeld het kopiëren van bestanden via FTP. Nadat het kopiëren is voltooid, begint het script onmiddellijk te werken. Een persoon moet het einde van het kopiëren zien, dan het einde van het kopiëren realiseren en vervolgens de juiste opdrachten invoeren. Het script doet het objectief sneller.

Scripts zijn van toepassing waar het onmogelijk is om tools voor het leveren van massagegevens te gebruiken: Console. Of wanneer sommige gegevens voor de apparatuur uniek zijn: hostnaam, beheer-ip-adres. Of bij het schrijven van een programma en het debuggen is het moeilijker dan het toevoegen van gegevens die van de apparatuur zijn ontvangen terwijl het script wordt uitgevoerd. - Een voorbeeld met een script voor het voorschrijven van een route, wanneer elk apparaat een eigen IP-adres van de internetprovider heeft. (Mijn collega's schreven dergelijke scripts - toen de DMVPN-spoke meer dan 3 was. Het was nodig om de DMVPN-instellingen te wijzigen).

Casestudy: Initiële instellingen configureren op een nieuwe switch met behulp van de consolepoorten:

A. De consolekabel is aangesloten op het apparaat.
B. Voer het script uit
B. Wachtte op de uitvoering van het script
D. Sluit de consolekabel aan op het volgende apparaat.
E. Als de schakelaar niet de laatste is, ga dan naar stap B.

Als resultaat van het werk van het script:

  • het initiële wachtwoord is ingesteld op de apparatuur.
  • Gebruikersnaam ingevoerd
  • het unieke IP-adres van het apparaat wordt ingevoerd.

PS de operatie moest worden herhaald. Omdat standaard ssh niet is geconfigureerd/uitgeschakeld. (Ja, dit is mijn fout.)

Gebruikte bronnen.

1. Over het maken van scripts
2. Scriptvoorbeelden

Bijlage 1: Voorbeeldscripts.


Een voorbeeld van een lang script, met twee vragen: Hostnaam en IP-adres. Het is gemaakt voor het vooraf instellen van apparatuur via de console (9600 baud). En ook om de aansluiting van apparatuur op het netwerk voor te bereiden.

# $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()

Dergelijke scripts zijn meestal niet nodig, maar de hoeveelheid apparatuur is 15 stuks. Snellere installatie toegestaan. Het was sneller om de apparatuur in te stellen met behulp van het SecureCRT Command-venster.

Een account aanmaken voor ssh.

Een ander voorbeeld. Configuratie is ook via de console.

# $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()


Over SecureCRT:Betaalde software: vanaf $ 99 (de laagste prijs is alleen voor SecureCRT voor een jaar)
Officiële website
Er wordt eenmalig een softwarelicentie aangeschaft, met ondersteuning (bij updaten), daarna wordt de software met deze licentie voor onbepaalde tijd gebruikt.

Werkt op Mac OS X en Windows-besturingssystemen.

Er is scriptondersteuning (dit artikel)
Er is Opdrachtvenster
Serieel/Telnet/SSH1/SSH2/Shell-besturingssysteem

Bron: www.habr.com