Hálózati mérnökök gyakran feladatot kapnak, hogy bizonyos szakaszokat másoljanak át a jegyzettömbből a konzolba. Általában több paramétert kell másolni: felhasználónév/jelszó és esetleg még valami mást. E folyamat felgyorsításához a szkriptek használata segíthet. DE a szkript írása és végrehajtása összesen kevesebb időt kell, hogy legyen, mint a kézi beállítás, különben a szkriptek haszontalanok.
Miért szükséges ez a cikk. Ez a cikk a Fast Start ciklus része, és a hálózati mérnökök időmegtakarítására irányul, amikor egy feladatot konfigurálnak több eszközön. A SecureCRT szoftver és a beépített szkript végrehajtási funkció használatával.
Tartalom
Bevezetés
A SecureCRT programban alapból van szkript végrehajtási mechanizmus. Mire valók a szkriptek a terminálban:
- Automatizált bemenet és kimenet, valamint minimális bemeneti/kimeneti helyesség ellenőrzés.
- A rutinfeladatok végrehajtásának felgyorsítása – a késések csökkentése az eszköz beállítása közben. (De facto a megszakítások csökkentése, amelyek a másolás/másolás idejéből adódnak ugyanazon eszközön, 3 vagy több parancsfrissítés esetén az eszközre.)
Ebben a dokumentumban a következő feladatokat tárgyaljuk:
- Egyszerű szkriptek létrehozása.
- Szkriptek indítása a SecureCRT-n.
- Egyszerű és fejlett szkriptek használatának példái. (Valós életből vett gyakorlat.)
Egyszerű szkriptek létrehozása.
Az egyszerű szkriptek csupán két parancsot használnak: Send és WaitForString. Ez a funkció 90% (vagy annál több) végrehajtott feladathoz elegendő.
A szkriptek Python, JS, VBS (Visual Basic), Perl stb. nyelven is működhetnek.
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()
Általában a „*.py” kiterjesztésű fájl
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
Általában a „*.vbs” kiterjesztésű fájl
Scriptek létrehozása a rögzítés segítségével.
Automatizálja a scriptírás folyamatát. Elindítja a script rögzítést. A SecureCRT rögzíti a parancsokat és a berendezés válaszát, és megjeleníti a kész scriptet.
a. A script rögzítés elindítása:
A SecureCRT menü => Script => Script rögzítése
b. Végezzen műveleteket a konzolon (végezzen el beállításokat a CLI-ben).
c. A script rögzítés befejezése:
A SecureCRT menü => Script => Script rögzítés leállítása…
Mentse el a script fájlt.
Példa végrehajtott parancsokra és mentett scriptekre:

Szkriptek indítása a SecureCRT-n.
A script létrehozása/igazítása után felmerül a kérdés: Hogyan alkalmazhatom a scriptet?
Több mód is létezik:
- Kézi indítás a Script menüből
- Automatikus indítás csatlakozás után (bejelentkező szkript)
- Automatikus bejelentkezés szkript használata nélkül
- Kézi indítás gomb használatával a SecureCRT-ben (a gombot még létre kell hozni és hozzá kell adni a SecureCRT-hez)
Kézi indítás a Script menüből
A SecureCRT menü => Script => Futtatás…
— Az utolsó 10 script megjegyzésre kerül és gyorsan elérhető:
A SecureCRT menü => Script => 1 „A script fájl neve”
A SecureCRT menü => Script => 2 „A script fájl neve”
A SecureCRT menü => Script => 3 „A script fájl neve”
A SecureCRT menü => Script => 4 „A script fájl neve”
A SecureCRT menü => Script => 5 „A script fájl neve”
Automatikus indítás csatlakozás után (bejelentkező szkript)
Az automatikus scriptbejelentkezés beállításai a mentett munkamenetre vonatkoznak: Connection => Logon Actions => Bejelentkezési script

Automatikus bejelentkezés szkript használata nélkül
Lehetőség van a felhasználónév és a jelszó automatikus bevitelére script írása nélkül, csak a SecureCRT beépített funkcióját használva. A Connection beállításokban „Connection” => Logon Actions => Automate logon – ki kell tölteni néhány párt, amelyek az „Elvárt szöveg” + „E szöveghez küldött karakterek” párokból állnak. (Példa: az 1. pár az űrlap felhasználónév bevitelének várakozása, a második a jelszó bevitelének várakozása, a harmadik egy privilegizált módra várakozás, a negyedik a privilegizált mód jelszava.)
Példa automatikus bejelentkezésre Cisco ASA-n:

Kézi indítás gomb használatával a SecureCRT-ben (a gombot még létre kell hozni és hozzá kell adni a SecureCRT-hez)
A SecureCRT-ben scriptet rendelhet egy gombhoz. A gombot egy erre a célra létrehozott panelen adjuk hozzá.
a. Panel hozzáadása az interfészhez: A SecureCRT menü => Nézet => Gombpanel
b. Gomb hozzáadása a panelhez és script hozzáadása. – Kattintson a jobb gombbal a Gombpanelre, és a helyi menüből válassza az „Új gomb…” lehetőséget.
c. A „Gomb hozzárendelése” párbeszédablakban az „Akció” mezőben válassza a „Script futtatása” funkciót.
Megadhatjuk a gomb feliratát. A gomb ikon színe. A beállítások befejezéséhez nyomja meg az Ok gombot.

Megjegyzés:
A gombokkal ellátott panel nagyon hasznos funkció.
1. Lehetőség van a Logon során egy adott sessionhöz megadni, hogy melyik panel nyíljon meg alapértelmezetten ebben a fülben.
2. Lehetőség van a standard műveletekhez előre megadott lépéseket hozzárendelni: show version, show running-config, konfiguráció mentése.

Ezekhez a gombokhoz nincs hozzárendelve semmilyen szkript. Csak egy sor a tevékenységekről:

A beállítások során biztosítani kell, hogy amikor a sessionre váltunk, megnyíljon a szükséges gombpanel:

Az ügyfél számára érdemes egyedi szkripteket beállítani a Loginhoz és a gyakran használt parancsok paneljére való váltáshoz az adott szolgáltatótól.
![]()
A Go Cisco gomb megnyomásakor a panel átvált a Cisco Button Bar-ra.

Egyszerű és fejlett szkriptek használatának példái. (Valós életből vett gyakorlat.)
Az egyszerű szkriptek majdnem minden élethelyzethez elegendőek. De egyszer szükségem volt egy kicsit bonyolultabb szkriptre – a munka gyorsabbá tételéhez. Ez a bonyolítás mindössze annyiból állt, hogy a felhasználótól további adatokat kért a párbeszédablakban.
Adatok kérése a felhasználótól párbeszédablak segítségével
A szkriptemben két adatbekérőt használtam. Ez a Hostname és az IP cím 4. oktettje volt. Ennek a lépésnek a végrehajtásához rákerestem, hogyan lehet ezt megtenni, és megtaláltam a SecureCRT hivatalos weboldalán (vandyke). – A funkció neve prompt.
crt.Screen.WaitForString("-Vlanif200]")
hostnamestr = crt.Dialog.Prompt("Adja meg a hostname-t:", "hostname", "", False)
ipaddressstr = crt.Dialog.Prompt("Adja meg az IP címet:", "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")
A szkript ezen része a Hostname-t és az utolsó oktet számát kérdezte meg. Mivel 15 berendezés volt, és az adatok táblázatban voltak megadva, a táblázatból másoltam értékeket és illesztettem be a párbeszédablakokba. Ezután a szkript önállóan működött.
FTP másolás hálózati eszközökre.
Ez a szkript megnyitotta a parancssort (shell), és FTP-n keresztül másolta az adatokat. A befejezéskor bezárta a sessiont. Szövegszerkesztőt használni erre lehetetlen, mivel a másolás nagyon lassú, és az FTP pufferben lévő adatok nem őrződnek meg ilyen hosszú ideig:
# $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()
Felhasználónév/jelszó bevitele szkripttel
Az egyik megbízónál a hálózati berendezésekhez közvetlen hozzáférés nem állt rendelkezésre. Az berendezésre való belépés először a gyári beállítású Átjárón keresztül történt, onnan pedig az azon csatlakoztatott berendezésekhez lehetett hozzáférni. A csatlakozáshoz az IOS/berendezés szoftverébe integrált ssh kliens került használatra. Ennek megfelelően a felhasználónév és a jelszó a konzolon volt megadva. Az alábbi szkripttel a felhasználónév és a jelszó automatikusan lett beírva:
# $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()
Megjegyzés: Két szkript létezett. Az egyik a rendszergazda fiókhoz, a másik az eSIGHT fiókhoz.
Szkript, amely lehetőséget ad az adatok közvetlen beírására a szkript futása közben.
A feladat az volt, hogy minden hálózati berendezésen statikus útvonalat adjunk hozzá. Az internetre mutató átjáró azonban minden berendezésen eltérő volt (és különbözött a gyári beállítású átjárótól). A következő szkript megjelenítette az útválasztási táblázatot, a konfigurálási módba lépett, de a parancsot (az internetes átjáró IP címe) nem írta be teljesen – ezt én adtam meg. Miután megnyomtam az Entert, a szkript folytatta a parancs végrehajtását.
# $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()
Ebben a szkriptben a következő sorban: crt.Screen.Send(„ip route 10.10.10.8 255.255.255.252 „) nem lett megadva az átjáró IP címe, és hiányzik a sortörő karakter. A szkript várja, hogy megjelenjen a következő sor, amely tartalmazza a „(config)#” karaktereket. Ezek a karakterek akkor jelentek meg, amikor megadtam az ip címet és megnyomtam az entert.
Következtetés:
A szkript írása és futása során feltétlenül be kell tartani a következő szabályt: A szkript írására és futtatására fordított idő soha nem lehet több, mint a manuális végrehajtáshoz elméletileg szükséges idő (másolás/benyújtás a jegyzettömbből, playbook írása és hibakeresése ansible-hez, python szkript írása és hibakeresése). Ezért a szkript használatának időt kell megtakarítania, nem pedig időt pazarolnia a folyamatok egyszeri automatizálására (tehát amikor a szkript egyedi és ismétlés nem lesz). Azonban ha a szkript egyedi, és a szkript automatizálása, írása/hibakeresése kevesebb időt vesz igénybe, mint bármilyen más módon történő végrehajtás (ansible, parancs ablak), akkor a szkript a legjobb megoldás.
A szkript hibakeresése. A szkript fokozatosan fejlődik, a hibakeresés az első, második, harmadik eszközön történik, és a negyedikre a szkript valószínűleg teljesen működőképes lesz.
A szkript indítása (felhasználónév+jelszó megadásával) egérrel általában gyorsabb, mint a feljegyzett Felhasználónév és Jelszó másolása. De biztonsági szempontból nem biztonságos.
Egy másik (valós) példa, amikor a szkript használata indokolt: Nincs közvetlen hozzáférése a hálózati eszközökhöz. De szükség van az összes hálózati eszköz beállításainak további finomítására (monitoring rendszerbe történő bevitel, további felhasználónév/jelszó/snmpv3felhasználónév/jelszó beállítása). Akkor van hozzáférése, amikor a Core switchre belép, és onnan SSH-t nyit más eszközökhöz. Miért nem lehet Ansible eszközöket használni? — Mert korlátozva vagyunk a hálózati eszközökön megengedett egyidejű munkamenetek számában (line vty 0 4, user-interface vty 0 4) (más kérdés, hogyan lehet Ansibleben különböző eszközöket kezelni az első hop SSH-n).
A szkript csökkenti az időt hosszan tartó műveleteknél – például fájlok másolásánál FTP-n. A másolás befejezése után a szkript azonnal elindul. Az embernek meg kell várnia a másolás befejezését, majd tudomásul venni azt, utána beírni a megfelelő parancsokat. A szkript ezt objektíven gyorsabban végzi el.
A szkriptek ott alkalmazhatók, ahol nem lehetséges tömeges adathordozási eszközök használata: Konzol. Vagy amikor az eszközöknek egyes adatai egyediek: hostname, management IP cím. Vagy amikor programot írni és hibakeresni nehezebb, mint a szkript futása során, az eszközöktől kapott adatokat kiegészíteni. — Példa egy szkriptre az útvonal beállításához, amikor minden eszközön más az internetszolgáltató IP címe. (A kollégáim írtak ilyen szkripteket — amikor a DMVPN spoke-ok száma meghaladta a 300-at. Meg kellett változtatni a DMVPN beállításait.)
Példa a gyakorlatból: Kezdeti beállítások megadása egy új switch-en keresztül konzolportokon:
A. Behelyeztem a konzol kábelt az eszközbe.
B. Elindítottam a szkriptet.
C. Megvártam a szkript végrehajtását.
D. Átkapcsoltam a konzol kábelt a következő eszközre.
E. Ha a switch nem az utolsó, térj vissza a B ponthoz.
Összegzés a szkript végrehajtásának eredményeként:
- az eszközön meg lett adva a kezdeti jelszó.
- meg lett adva a felhasználónév.
- meg lett adva az eszköz egyedi IP címe.
P. S. az eljárást meg kellett ismételni. Mivel a Default ssh nincs beállítva/kikapcsolva. (Igen, ez az én hibám.)
Felhasznált források.
1.
2.
1. sz. melléklet: Szkriptek példái.
Példa egy hosszú szkriptre, két lekéréssel: Hostnév és IP cím. Az eszközök előkonfigurálásához készült a konzolon (9600 baud). Valamint az eszközök hálózatra csatlakoztatásának előkészítésére.
# $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()
Az ilyen szkriptek általában nem szükségesek, de a felszerelés száma – 15 db. Ez lehetővé tette a beállítás felgyorsítását. A további beállítást a SecureCRT Command ablak segítségével gyorsabban végezhettük el.
Fiók beállítása ssh-hoz.
Másik példa. Beállítás szintén a konzolon keresztül.
# $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()
A SecureCRT-ről:Fizetős szoftver: 99$-tól (a legalacsonyabb ár csak a SecureCRT-ra egy évre)
Egyszer kell megvásárolni a szoftver licencét, a támogatással (frissítéshez), utána a szoftver ezzel a licenccel korlátlan ideig használható.
Mac OS X és Windows operációs rendszereken működik.
Van szkript támogatás (ez a cikk)
Van
Sorozat/Telnet/SSH1/SSH2/Shell operációs rendszer
Forrás: habr.com
