Syötön automatisointi SecureCRT:ssä komentosarjojen avulla
Verkkoinsinöörit joutuvat usein kopioimaan/liittämään tiettyjä fragmentteja muistilehtiöstä konsoliin. Yleensä joudut kopioimaan useita parametreja: Käyttäjänimi/Salasana ja jotain muuta. Skriptien käytön avulla voit nopeuttaa tätä prosessia. MUTTA komentosarjan kirjoittaminen ja komentosarjan suorittaminen vievät yhteensä vähemmän aikaa kuin manuaalinen konfigurointi, muuten skriptit ovat hyödyttömiä.
Mitä varten tämä artikkeli on tarkoitettu? Tämä artikkeli on osa Fast Start -sarjaa, ja sen tarkoituksena on säästää verkkoinsinöörien aikaa, kun ne määrittävät laitteita (yksi tehtävä) useissa laitteissa. Käyttää SecureCRT-ohjelmistoa ja sisäänrakennettua komentosarjan suoritustoimintoa. Pitoisuus
SecureCRT-ohjelmassa on sisäänrakennettu komentosarjan suoritusmekanismi. Mitä varten terminaaliskriptit ovat?
Automaattinen I/O ja minimaalinen I/O-validointi.
Nopeuta rutiinitehtävien suorittamista – lyhennä taukoja laiteasetusten välillä. (De facto vähentää taukoja, jotka johtuvat kopiointi-/aikaistoimintojen suorittamisesta samalla laitteistolla, ja laitteistoon sovelletaan kolmea tai useampaa komentofragmenttia.)
Tämä asiakirja kattaa tehtävät:
Yksinkertaisten skriptien luominen.
Skriptien suorittaminen SecureCRT:llä.
Esimerkkejä yksinkertaisten ja edistyneiden komentosarjojen käytöstä. (Harjoittelu tosielämästä.)
Yksinkertaisten skriptien luominen.
Yksinkertaisimmat komentosarjat käyttävät vain kahta komentoa, Send ja WaitForString. Tämä toiminto riittää 90 %:iin (tai useampaan) suoritetuista tehtävistä.
Skriptit voivat toimia Pythonissa, JS:ssä, VBS:ssä (Visual Basic), Perlissä jne.
# $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
Yleensä tiedosto, jonka tunniste on "*.vbs"
Luo skripti skriptimerkinnän avulla.
Voit automatisoida skriptin kirjoittamisen. Aloitat käsikirjoituksen kirjoittamisen. SecureCRT tallentaa komennot ja niitä seuraavat laitteistovastaukset ja näyttää valmiin komentosarjan puolestasi.
A. Aloita käsikirjoituksen kirjoittaminen:
SecureCRT Menu => Script => Aloita komentosarjan tallennus
b. Suorita toiminnot konsolilla (suorita määritysvaiheet CLI:ssä).
V. Kirjoita käsikirjoitus loppuun:
SecureCRT-valikko => Skripti => Lopeta komentosarjan tallennus…
Tallenna skriptitiedosto.
Esimerkki suoritetuista komennoista ja tallennetusta komentosarjasta:
Skriptien suorittaminen SecureCRT:llä.
Skriptin luomisen/muokkauksen jälkeen herää luonnollinen kysymys: Miten komentosarjaa käytetään?
On olemassa useita tapoja:
Suoritetaan manuaalisesti Script-valikosta
Automaattinen käynnistys yhteyden jälkeen (kirjautumisskripti)
Automaattinen kirjautuminen ilman komentosarjaa
Laukaisu manuaalisesti painikkeella SecureCRT:ssä (painiketta ei ole vielä luotu ja lisätty SecureCRT:hen)
Suoritetaan manuaalisesti Script-valikosta
SecureCRT Menu => Script => Suorita…
- Viimeiset 10 skriptiä muistetaan ja ne ovat käytettävissä pikakäynnistystä varten:
SecureCRT-valikko => Script => 1 "Komentosarjatiedoston nimi"
SecureCRT-valikko => Script => 2 "Komentosarjatiedoston nimi"
SecureCRT-valikko => Script => 3 "Komentosarjatiedoston nimi"
SecureCRT-valikko => Script => 4 "Komentosarjatiedoston nimi"
SecureCRT-valikko => Script => 5 "Komentosarjatiedoston nimi"
Automaattinen käynnistys yhteyden jälkeen (kirjautumisskripti)
Automaattiset kirjauskomentosarjan asetukset on määritetty tallennettua istuntoa varten: Yhteys => Kirjautumistoiminnot => Kirjautumisskripti
Automaattinen kirjautuminen ilman komentosarjaa
Salasanan käyttäjätunnus on mahdollista syöttää automaattisesti ilman komentosarjaa käyttämällä vain SecureCRT:n sisäänrakennettua toimintoa. Yhteysasetuksissa "Yhteys" => Kirjautumistoiminnot => Automatisoi sisäänkirjautuminen - sinun on täytettävä useita nippuja - mikä tarkoittaa pareja: "Odotettu teksti" + "Tähän tekstiin lähetetyt merkit" tällaisia pareja voi olla useita. (Esimerkki: 1. pari odottaa käyttäjätunnusta, toinen salasanaa, kolmas odottaa etuoikeutetun tilan kehotetta, neljäs pari etuoikeutetun tilan salasanaa.)
Esimerkki automaattisesta kirjautumisesta Cisco ASA:ssa:
Laukaisu manuaalisesti painikkeella SecureCRT:ssä (painiketta ei ole vielä luotu ja lisätty SecureCRT:hen)
SecureCRT:ssä voit määrittää painikkeelle komentosarjan. Painike lisätään erityisesti tätä tarkoitusta varten luotuun paneeliin.
A. Paneelin lisääminen käyttöliittymään: SecureCRT Menu => View => Button Bar
b. Lisää painike paneeliin ja lisää komentosarja. – Napsauta painikeriviä hiiren kakkospainikkeella ja valitse pikavalikosta ”Uusi painike…”.
V. Valitse "Karttapainike"-valintaikkunan "Toiminto"-kentästä "Suorita komentosarja" -toiminto (toiminto).
Määritä painikkeelle kuvateksti. Painikekuvakkeen väri. Viimeistele asetukset napsauttamalla OK.
Huom:
Painikkeilla varustettu paneeli on erittäin hyödyllinen toiminto.
1. Kun kirjaudut sisään tiettyyn istuntoon, voit määrittää, mikä paneeli avataan oletusarvoisesti tälle välilehdelle.
2. On mahdollista asettaa valmiita toimintoja vakiotoimintoihin laitteiden kanssa: näytä näytä versio, näytä käynnissä-config, tallenna konfiguraatio.
Näihin painikkeisiin ei ole liitetty komentosarjaa. Vain toimintalinja:
Asetus - niin, että istuntoon vaihdettaessa tarvittava paneeli painikkeineen avautuu istuntoasetuksiin:
Asiakkaan on järkevää määrittää yksittäisiä komentosarjoja kirjautumiseen ja siirtyä paneeliin, jossa on usein toimittajan komentoja.
Kun painat Go Cisco -painiketta, paneeli vaihtaa Cisco-painikepalkkiin.
Esimerkkejä yksinkertaisten ja edistyneiden komentosarjojen käytöstä. (Harjoittelu tosielämästä.)
Yksinkertaiset skriptit riittävät melkein kaikkiin tilanteisiin. Mutta kerran minun piti monimutkaista käsikirjoitusta hieman - työn nopeuttamiseksi. Tämä komplikaatio pyysi käyttäjältä yksinkertaisesti lisätietoja valintaikkunassa.
Tietojen pyytäminen käyttäjältä valintaikkunan avulla
Minulla oli tietopyyntöskriptissä 2. Tämä on isäntänimi ja IP-osoitteen 4. oktetti. Suorittaaksesi tämän toiminnon - googletin kuinka se tehdään ja löysin sen SecureCRT:n (vandyke) viralliselta verkkosivustolta. - toimintoa kutsutaan kehotteeksi.
Tämä käsikirjoituksen osa pyysi isäntänimeä ja numeroita viimeisestä oktetista. Koska laitteita oli 15 kappaletta. Ja tiedot esitettiin taulukossa, sitten kopioin arvot taulukosta ja liitin ne valintaikkunoihin. Lisäksi käsikirjoitus toimi itsenäisesti.
FTP-kopiointi verkkolaitteeseen.
Tämä komentosarja käynnisti komentoikkunani (shell) ja kopioi tiedot FTP:n kautta. Lopuksi sulje istunto. Muistio on mahdotonta käyttää tähän, koska kopiointi kestää hyvin kauan ja FTP-puskurissa olevat tiedot eivät säily niin kauan:
# $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()
Käyttäjätunnuksen/salasanan syöttäminen komentosarjan avulla
Yhdellä asiakkaalla verkkolaitteiden suora pääsy suljettiin. Laitteeseen pääsi sisään kytkemällä ensin Default Gateway -yhdyskäytävään ja sieltä sitten siihen liitettyyn laitteeseen. Yhteyden muodostamiseen käytettiin IOS-/laitteistoohjelmistoon sisäänrakennettua ssh-asiakasta. Vastaavasti käyttäjätunnusta ja salasanaa pyydettiin konsolissa. Alla olevalla skriptillä käyttäjätunnus ja salasana syötettiin automaattisesti:
# $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()
Huomautus: Skriptejä oli 2. Yksi järjestelmänvalvojatilille ja toinen eSIGHT-tilille.
Komentosarja, jolla on mahdollisuus liittää tietoja suoraan komentosarjan suorittamisen aikana.
Tehtävänä oli lisätä staattinen reitti kaikkiin verkkolaitteisiin. Mutta jokaisen laitteen yhdyskäytävä Internetiin oli erilainen (ja se erosi oletusyhdyskäytävästä). Seuraava komentosarja näytti reititystaulukon, siirtyi määritystilaan, ei kirjoittanut komentoa loppuun (Internet-yhdyskäytävän IP-osoite) - lisäsin tämän osan. Kun painoin Enter, komentosarja jatkoi komennon suorittamista.
# $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()
Tässä komentosarjassa rivillä: crt.Screen.Send("ip-reitti 10.10.10.8 255.255.255.252 ") yhdyskäytävän IP-osoitetta ei lisätä, eikä vaunun palautusmerkkiä ole. Skripti odottaa seuraavaa riviä merkeillä "(config) #" Nämä merkit ilmestyivät, kun annoin IP-osoitteen ja kirjoitin.
johtopäätös:
Komentosarjaa kirjoitettaessa ja suoritettaessa on noudatettava sääntöä: Skriptin kirjoittamiseen ja skriptin suorittamiseen käytettävä aika ei saa koskaan olla enemmän kuin aika, joka teoreettisesti kuluu saman työn tekemiseen manuaalisesti (kopioi / liitä muistilehtiöstä, kirjoittaminen ja virheenkorjaus) leikkikirja ansible-, kirjoitus- ja virheenkorjauspython-skriptille). Toisin sanoen komentosarjan käytön pitäisi säästää aikaa eikä tuhlata aikaa prosessien kertaluonteiseen automatisointiin (eli kun komentosarja on ainutlaatuinen ja toistoa ei enää ole). Mutta jos skripti on ainutlaatuinen ja skriptin automatisointi ja skriptin kirjoittaminen/virheenkorjaus vie vähemmän aikaa kuin sen tekeminen millään muulla tavalla (mahdollinen, komentoikkuna), niin komentosarja on paras ratkaisu.
Skriptin virheenkorjaus. Skripti kasvaa vähitellen, virheenkorjaus tapahtuu ensimmäisen, toisen ja kolmannen laitteen ajon aikana, ja neljännellä skripti on todennäköisesti täysin toimintakunnossa.
Skriptin suorittaminen (näppäilemällä käyttäjätunnus+salasana) hiirellä on yleensä nopeampaa kuin käyttäjänimen ja salasanan kopioiminen muistikirjasta. Mutta se ei ole turvallista turvallisuuden kannalta.
Toinen (todellinen) esimerkki komentosarjan käytöstä: Sinulla ei ole suoraa pääsyä verkkolaitteisiin. Mutta kaikki verkkolaitteet on konfiguroitava (tuo ne valvontajärjestelmään, määritä ylimääräinen käyttäjätunnus/salasana/snmpv3-käyttäjänimi/salasana). Pääsy on, kun siirryt Core-kytkimelle, josta avaat SSH:n muille laitteille. Miksi et voi käyttää Ansiblea. - Koska kohtaamme rajoituksen sallittujen samanaikaisten istuntojen lukumäärässä verkkolaitteissa (linja vty 0 4, käyttöliittymä vty 0 4) (toinen kysymys on, kuinka käynnistää eri laitteet Ansiblessa samalla SSH:n ensimmäisellä hyppyllä).
Skripti vähentää aikaa pitkien toimintojen aikana - esimerkiksi kopioitaessa tiedostoja FTP:n kautta. Kun kopiointi on valmis, skripti alkaa toimia välittömästi. Henkilön täytyy nähdä kopioinnin loppu, sitten ymmärtää kopioinnin loppu ja antaa sitten asianmukaiset komennot. Käsikirjoitus tekee sen objektiivisesti nopeammin.
Komentosarjoja voidaan käyttää silloin, kun on mahdotonta käyttää massatiedonvälitystyökaluja: Konsoli. Tai kun jotkin laitteen tiedoista ovat ainutlaatuisia: isäntänimi, hallinnan IP-osoite. Tai ohjelman kirjoittaminen ja virheenkorjaus on vaikeampaa kuin laitteelta vastaanotettujen tietojen lisääminen komentosarjan ollessa käynnissä. - Esimerkki komentosarjasta reitin määräämiseen, kun jokaisella laitteella on oma Internet-palveluntarjoajan IP-osoite. (Kollegani kirjoittivat tällaisia skriptejä - kun DMVPN-puhuja oli yli 3. Oli tarpeen muuttaa DMVPN-asetuksia).
Tapaustutkimus: Uuden kytkimen alkuasetusten määrittäminen konsolin porttien avulla:
A. Kytke konsolin kaapeli laitteeseen.
B. Suorita komentosarja
B. Odotin käsikirjoituksen suorittamista
D. Kytke konsolin kaapeli seuraavaan laitteeseen.
E. Jos kytkin ei ole viimeinen, siirry vaiheeseen B.
Käsikirjoitustyön tuloksena:
alkuperäinen salasana on asetettu laitteeseen.
Käyttäjätunnus syötetty
laitteen yksilöllinen IP-osoite syötetään.
PS toimenpide piti toistaa. Koska oletus-ssh:tä ei ole määritetty/poistettu käytöstä. (Kyllä, tämä on minun virheeni.)
Esimerkki pitkästä komentosarjasta, jossa on kaksi kyselyä: Isäntänimi ja IP-osoite. Se luotiin laitteiden esiasetusta varten konsolin kautta (9600 baudia). Ja myös valmistella laitteiden liittäminen verkkoon.
Tällaisia skriptejä ei yleensä tarvita, mutta laitteiden määrä on 15 kpl. Sallittu nopeampi asennus. Laitteiden määrittäminen SecureCRT Command -ikkunan avulla oli nopeampaa.
Tilin luominen ssh:lle.
Toinen esimerkki. Asetukset tehdään myös konsolin kautta.
# $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()
Tietoja SecureCRT:stä:Maksullinen ohjelmisto: alkaen 99 dollaria (pienin hinta on vain SecureCRT:lle vuodeksi) Virallinen sivusto
Ohjelmistolisenssi ostetaan kerran tuella (päivitystä varten), jonka jälkeen ohjelmistoa käytetään tämän lisenssin kanssa rajoittamattoman ajan.
Toimii Mac OS X- ja Windows-käyttöjärjestelmissä.
Siellä on komentosarjatuki (tämä artikkeli)
On Komento-ikkuna
Serial/Telnet/SSH1/SSH2/Shell-käyttöjärjestelmä