Automatisering van invoer in SecureCRT met behulp van scripts

Netwerktechnici hebben vaak de taak om bepaalde fragmenten van een notepad naar de console te kopiëren/plakken. Gewoonlijk moeten verschillende parameters worden gekopieerd: Gebruikersnaam/Wachtwoord en nog iets anders. Het gebruik van scripts versnelt dit proces. MAAR de totale tijd voor het schrijven en uitvoeren van een script moet minder zijn dan het handmatig instellen, anders zijn scripts nutteloos.

Waarom is dit artikel nodig. Dit artikel maakt deel uit van de Fast Start-reeks en is gericht op het besparen van tijd voor netwerktechnici bij het configureren van apparatuur (één taak) op meerdere apparaten. Er wordt gebruikgemaakt van SecureCRT-software en de ingebouwde functionaliteit voor het uitvoeren van scripts.

Inhoud

Inleiding

De SecureCRT-software omvat standaard een mechanismen voor het uitvoeren van scripts. Voor wat zijn scripts in de terminal:

  • Geautomatiseerde invoer en uitvoer, en minimale controle van de juistheid van invoer/uitvoer.
  • Versnel de uitvoering van routinetaken - vermindering van pauzes tussen het instellen van apparatuur. (De feitelijke vermindering van pauzes veroorzaakt door de tijd die nodig is voor het kopiëren/plakken van hetzelfde apparatuur bij drie of meer fragmenten van opdrachten die op de apparatuur moeten worden toegepast.)

In dit document worden de volgende taken besproken:

  • Creëren van de eenvoudigste scripts.
  • Scripts uitvoeren op SecureCRT.
  • Voorbeelden van eenvoudig en geavanceerd gebruik van scripts. (Praktijk uit het echte leven.)

Creëren van de eenvoudigste scripts.

Eenvoudige scripts gebruiken slechts twee commando's: Send en WaitForString. Deze functionaliteit is voldoende voor 90% (of meer) van de uitgevoerde taken.

Scripts kunnen worden uitgevoerd in Python, JS, VBS (Visual Basic), Perl, enz.

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

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

Een bestand met de extensie «*.vbs»

Een script maken met behulp van scriptopname.

Dit maakt het mogelijk om het proces van het schrijven van een script te automatiseren. U start de opname van het script. SecureCRT registreert de commando's en de daaropvolgende reactie van de apparatuur en geeft u het kant-en-klare script.

a. Start de opname van het script:
Menu SecureCRT => Script => Start Recording Script
b. Voer acties uit met de console (voeren acties uit in de CLI).
c. Stop de opname van het script:
Menu SecureCRT => Script => Stop Recording Script…
Sla het bestand met het script op.

Voorbeeld van uitgevoerde commando's en het opgeslagen script:

Automatisering van invoer in SecureCRT met behulp van scripts

Scripts uitvoeren op SecureCRT.

Na het maken/bewerken van het script rijst de logische vraag: Hoe pas je het script toe?
Er zijn verschillende manieren:

  • Handmatig starten vanuit het menu Script
  • Automatisch starten na verbinding (logonscript)
  • Automatisch inloggen zonder gebruik van een script
  • Handmatig starten met behulp van een knop in SecureCRT (de knop moet nog worden gemaakt en aan SecureCRT worden toegevoegd)

Handmatig starten vanuit het menu Script

Menu SecureCRT => Script => Run…
— De laatste 10 scripts worden onthouden en zijn beschikbaar voor snelle uitvoering:
Menu SecureCRT => Script => 1 «Bestandsnaam van het script»
Menu SecureCRT => Script => 2 «Bestandsnaam van het script»
Menu SecureCRT => Script => 3 «Bestandsnaam van het script»
Menu SecureCRT => Script => 4 «Bestandsnaam van het script»
Menu SecureCRT => Script => 5 «Bestandsnaam van het script»

Automatisch starten na verbinding (logonscript)

Instellingen voor automatisch scriptlogging worden ingesteld voor de opgeslagen sessie: Verbinding => Logon Acties => Logon-script

Automatisering van invoer in SecureCRT met behulp van scripts

Automatisch inloggen zonder gebruik van een script

Er is de mogelijkheid voor automatische invoer van gebruikersnaam en wachtwoord zonder een script te schrijven, enkel met de ingebouwde functionaliteit van SecureCRT. In de verbindingsinstellingen «Verbinding» => Logon Acties => Automate logon – moet u verschillende paren invullen die bestaan uit: «Verwachte tekst» + «Verzonden tekens naar deze tekst»; er kunnen veel van zulke paren zijn. (Voorbeeld: 1e paar wacht op invoer van gebruikersnaam, 2e wacht op invoer van wachtwoord, 3e wacht op prompt voor geprivilegieerde modus, 4e wachtwoord voor de geprivilegieerde modus.)

Voorbeeld van automatische logon op Cisco ASA:

Automatisering van invoer in SecureCRT met behulp van scripts

Handmatig starten met behulp van een knop in SecureCRT (de knop moet nog worden gemaakt en aan SecureCRT worden toegevoegd)

In SecureCRT kunt u een script aan een knop koppelen. De knop wordt toegevoegd aan een speciaal daarvoor gemaakte werkbalk.

a. Voeg de werkbalk toe aan de interface: Menu SecureCRT => Weergave => Button Bar
b. Voeg een knop toe aan de werkbalk en voeg het script toe. – Klik met de rechtermuisknop op de werkbalk Button Bar en selecteer de optie «Nieuwe knop…» in het contextmenu.
c. In het dialoogvenster «Map Button» kiest u in het veld «Actie» de actie (functie) «Run Script».
Voer de knoplabel in. Kleur voor het knoppictogram. Voltooi de instellingen door op Ok te klikken.

Automatisering van invoer in SecureCRT met behulp van scripts

Opmerking:

Een paneel met knoppen is een zeer nuttige functie.

1. Het is mogelijk om bij het aanmelden (Logon) voor een bepaalde sessie te specificeren welk paneel standaard moet worden geopend voor dit tabblad.

2. Er is de mogelijkheid om voor standaardacties met apparatuur vooraf gedefinieerde acties in te stellen: show version, show running-config, configuratie opslaan.

Automatisering van invoer in SecureCRT met behulp van scripts
Er is geen script aan deze knoppen gekoppeld. Alleen de regel met acties:

Automatisering van invoer in SecureCRT met behulp van scripts
Instelling – zodat bij het wisselen naar de sessie het vereiste paneel met knoppen wordt geopend, wordt uitgevoerd in de sessie-instellingen:

Automatisering van invoer in SecureCRT met behulp van scripts
Voor de klant is het zinvol om persoonlijke scripts in te stellen voor Login en over te schakelen naar het paneel met veelgebruikte commando's voor de leverancier.

Automatisering van invoer in SecureCRT met behulp van scripts
Wanneer op de knop Go Cisco wordt gedrukt, schakelt het paneel over naar de Cisco Button Bar.

Automatisering van invoer in SecureCRT met behulp van scripts

Voorbeelden van eenvoudig en geavanceerd gebruik van scripts. (Praktijk uit het echte leven.)

Eenvoudige scripts zijn in bijna alle situaties voldoende. Maar op een gegeven moment had ik een iets complexer script nodig om de werking te versnellen. Deze complicatie vroeg slechts aanvullende gegevens in een dialoogvenster van de gebruiker.

Gegevens aanvragen van de gebruiker met behulp van een dialoogvenster

In mijn scripts voor gegevensopvraging had ik 2 aanvragen. Dit was de Hostname en het vierde octet van het IP-adres. Om deze actie uit te voeren, heb ik gegoogeld hoe ik dit moest doen en vond ik het op de officiële website van SecureCRT (vandyke) – de functionaliteit heet prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Voer hostname in:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Voer ip adres in:", "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 de Hostname en de cijfers uit het laatste octet. Aangezien er 15 apparaten waren en de gegevens in een tabel stonden, kopieerde ik de waarden uit de tabel en plakte ze in de dialoogvensters. Vervolgens werkte het script zelfstandig.

FTP-kopie naar netwerkapparatuur.

Dit script startte voor mij de opdrachtprompt (shell) en kopieerde gegevens via FTP. Na voltooiing sloot het de sessie. Het is onmogelijk om Kladblok hiervoor te gebruiken, aangezien het kopiëren erg langzaam gaat en de gegevens in het FTP-buffer niet zo lang bewaard zullen 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()

Invoeren van gebruikersnaam/wachtwoord met behulp van een script

Bij een klant was de toegang tot netwerkinfrastructuur rechtstreeks geblokkeerd. Om toegang te krijgen tot de apparatuur moest men eerst verbinding maken met de standaardgate, en vandaaruit verbinding maken met de aan die gate gekoppelde apparatuur. Voor de verbinding werd de SSH-client gebruikt die ingebouwd is in de IOS/firmware van de apparatuur. De gebruikersnaam en het wachtwoord werden in de console gevraagd. Met behulp van het onderstaande 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. Een voor het administratieve account, de andere voor het eSIGHT-account.

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

De taak was om op alle netwerkinfrastructuur een statisch pad toe te voegen. Echter, de internetgateway op elke apparatuur was verschillend (en verschilde van de standaardgateway). Het volgende script gaf de routeringstabel weer, schakelde over naar de configuratiemodus en voegde het commando niet volledig in (IP-adres van de internetgateway) - dit deel vulde ik in. Nadat ik op Enter drukte, ging het script verder met de uitvoering van het commando.

# $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 is in de regel: crt.Screen.Send(«ip route 10.10.10.8 255.255.255.252 „) het IP-adres van de gateway niet ingevuld en ontbreekt het carriage return-teken. Het script wacht op de volgende regel met het teken «(config)#». Deze tekens verschenen nadat ik het IP-adres invoerde en op enter drukte.

Conclusie:

Bij het schrijven en uitvoeren van het script moet te allen tijde de regel volgen: De tijd voor het schrijven van het script en de uitvoering van het script mag nooit groter zijn dan de theoretische tijd die nodig is om dezezelfde taak handmatig uit te voeren (copy/paste vanuit een notitieblok, het schrijven en debuggen van een playbook voor Ansible, het schrijven en debuggen van een Python-script). Dat wil zeggen, het gebruik van het script moet tijd besparen, en niet tijd kosten voor eenmalige automatisering van processen (d.w.z. wanneer het script uniek is en herhaalde uitvoering niet meer zal plaatsvinden). Maar als het script uniek is en de automatisering met het script en het schrijven/debuggen van het script minder tijd kost dan uitvoering op een andere manier (Ansible, opdrachtvenster), dan is het script de beste oplossing.
Debugging van het script. Het script groeit geleidelijk, de debugging gebeurt op de eerste, tweede, derde apparaat en tegen het vierde zou het script waarschijnlijk volledig operationeel zijn.

Het uitvoeren van een script (met invoer van username+password) met de muis gebeurt meestal sneller dan het kopiëren van de Username en Password vanuit een notitieblok. Maar het is niet veilig vanuit een beveiligingsperspectief.
Een ander (echt) voorbeeld wanneer het gebruik van een script: U heeft geen directe toegang tot de netwerkinfrastructuur. Maar er is behoefte om alle netwerkinfrastructuur opnieuw te configureren (in het monitoring systeem opnemen, extra Username/password/snmpv3username/password configureren). Er is toegang wanneer u inlogt op de Core-switch, van daaruit opent u SSH naar andere apparaten. Waarom kunnen we geen Ansible-tools gebruiken? — Omdat we tegen de limiet aanlopen van het aantal gelijktijdige sessies op de netwerkinfrastructuur (line vty 0 4, user-interface vty 0 4) (een andere vraag is hoe je in Ansible verschillende apparaten met dezelfde SSH als eerste hop toevoegt).

Het script verkort de tijd bij langdurige operaties - bijvoorbeeld bij het kopiëren van bestanden via FTP. Zodra het kopiëren is voltooid, begint het script direct met werken. Een persoon moet zien dat de kopieeractie is voltooid, er bij stil staan, en vervolgens de juiste commando's invoeren. Dit doet het script objectief sneller.

Scripts zijn toepasbaar waar massale dataleveringstools niet kunnen worden gebruikt: Console. Of wanneer een deel van de gegevens voor de apparatuur uniek is: hostname, management ip address. Of wanneer het schrijven van een programma en de debug hiervan moeilijker is dan het aanvullen van de gegevens die tijdens het uitvoeren van het script van de apparatuur zijn verkregen. — Voorbeeld van een script voor het instellen van een route, wanneer elke apparatuur een uniek IP-adres heeft van de internetprovider. (Mijn collega's hebben zulke scripts geschreven — toen er meer dan 300 DMVPN spaken waren. Het was nodig om de DMVPN-instellingen te wijzigen).

Praktijkvoorbeeld: Het instellen van de initiële configuraties op een nieuwe switch via consolepoorten:

A. Ik heb de consolekabel in het apparaat gestoken.
B. Ik heb het script gestart
C. Ik heb gewacht tot het script was uitgevoerd
D. Ik heb de consolekabel in het volgende apparaat gestoken.
E. Als de switch niet de laatste is, ga terug naar punt B.

Samengevat, na het uitvoeren van het script:

  • is het initiële wachtwoord op het apparaat ingesteld.
  • Username is ingevoerd.
  • uniek IP-adres van het apparaat is ingevoerd.

P.S. de operatie moest herhaald worden. Omdat de ssh standaard niet geconfigureerd/uitgeschakeld was. (Ja, dat is mijn fout.)

Gebruikte bronnen.

1. Over het maken van scripts
2. Voorbeelden van scripts

Bijlage 1: Voorbeelden van scripts.


Voorbeeld van een lange script met twee verzoeken: Hostnaam en IP-adres. Dit is gemaakt voor de voorafconfiguratie van apparatuur via de console (9600 baud). Daarnaast voor de voorbereiding van de verbinding van apparatuur met het netwerk.

# $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 het aantal apparaten - 15 stuks - heeft de configuratie versneld. De verdere configuratie van de apparatuur ging sneller met behulp van het SecureCRT Command-venster.

Instelling van het account voor ssh.

Een ander voorbeeld. Configuratie 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 alleen voor SecureCRT voor één jaar)
Officiële website
Licentie voor de software wordt één keer aangeschaft, met ondersteuning (voor updates), daarna kan de software onbeperkt met deze licentie worden gebruikt.

Werkt op de besturingssystemen Mac OS X en Windows.

Er is ondersteuning voor scripts (deze artikel)
Er is Command Window
Serieel/Telnet/SSH1/SSH2/Shell van het besturingssysteem

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster