Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Οι μηχανικοί δικτύου αντιμετωπίζουν συχνά το καθήκον της αντιγραφής/επικόλλησης ορισμένων τμημάτων από ένα σημειωματάριο στην κονσόλα. Συνήθως πρέπει να αντιγράψετε πολλές παραμέτρους: Όνομα χρήστη/Κωδικό πρόσβασης και κάτι άλλο. Η χρήση σεναρίων σάς επιτρέπει να επιταχύνετε αυτή τη διαδικασία. ΑΛΛΑ οι εργασίες της συγγραφής του σεναρίου και της εκτέλεσης του σεναρίου θα πρέπει να χρειάζονται λιγότερο χρόνο συνολικά από τη μη αυτόματη ρύθμιση παραμέτρων, διαφορετικά τα σενάρια είναι άχρηστα.

Σε τι χρησιμεύει αυτό το άρθρο; Αυτό το άρθρο προέρχεται από τη σειρά Fast Start και στοχεύει στην εξοικονόμηση χρόνου από τους μηχανικούς δικτύου κατά την εγκατάσταση εξοπλισμού (μία εργασία) σε πολλές συσκευές. Χρησιμοποιεί λογισμικό SecureCRT και ενσωματωμένη λειτουργία εκτέλεσης σεναρίου.

περιεχόμενο

Εισαγωγή

Το πρόγραμμα SecureCRT έχει έναν ενσωματωμένο μηχανισμό εκτέλεσης σεναρίου από το κουτί. Σε τι χρησιμεύουν τα σενάρια τερματικού;

  • Αυτοματοποιημένη I/O και ελάχιστη επικύρωση I/O.
  • Επιταχύνετε την εκτέλεση εργασιών ρουτίνας - μειώνοντας τις παύσεις μεταξύ των ρυθμίσεων του εξοπλισμού. (De facto μείωση των παύσεων που προκαλούνται από το χρόνο για την εκτέλεση ενεργειών αντιγραφής/προηγούμενων ενεργειών στο ίδιο υλικό, με 3 ή περισσότερα τμήματα εντολών που θα εφαρμοστούν στο υλικό.)

Αυτό το έγγραφο καλύπτει τις εργασίες:

  • Δημιουργία απλών σεναρίων.
  • Εκτέλεση σεναρίων στο SecureCRT.
  • Παραδείγματα χρήσης απλών και προηγμένων σεναρίων. (Πρακτική από την πραγματική ζωή.)

Δημιουργία απλών σεναρίων.

Τα πιο απλά σενάρια χρησιμοποιούν μόνο δύο εντολές, Send και WaitForString. Αυτή η λειτουργία είναι αρκετή για το 90% (ή περισσότερο) των εργασιών που εκτελούνται.

Τα σενάρια μπορούν να λειτουργήσουν σε Python, JS, VBS (Visual Basic), Perl κ.λπ.

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

Συνήθως ένα αρχείο με την επέκταση "*.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

Συνήθως ένα αρχείο με την επέκταση "*.vbs"

Δημιουργήστε ένα σενάριο χρησιμοποιώντας μια καταχώρηση σεναρίου.

Σας επιτρέπει να αυτοματοποιήσετε τη διαδικασία σύνταξης ενός σεναρίου. Ξεκινάς να γράφεις ένα σενάριο. Το SecureCRT καταγράφει τις εντολές και την επακόλουθη απόκριση υλικού και εμφανίζει το τελικό σενάριο για εσάς.

ΕΝΑ. Ξεκινήστε να γράφετε σενάριο:
SecureCRT Menu => Script => Start Recording Script
σι. Εκτελέστε ενέργειες με την κονσόλα (εκτελέστε βήματα διαμόρφωσης στο CLI).
V. Ολοκληρώστε τη συγγραφή του σεναρίου:
Μενού SecureCRT => Σενάριο => Διακοπή εγγραφής σεναρίου…
Αποθηκεύστε το αρχείο σεναρίου.

Παράδειγμα εκτελεσμένων εντολών και αποθηκευμένου σεναρίου:

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Εκτέλεση σεναρίων στο SecureCRT.

Μετά τη δημιουργία/επεξεργασία του σεναρίου, τίθεται ένα λογικό ερώτημα: Πώς να εφαρμόσετε το σενάριο;
Υπάρχουν διάφοροι τρόποι:

  • Εκτέλεση χειροκίνητα από το μενού Script
  • Αυτόματη εκκίνηση μετά τη σύνδεση (σενάριο σύνδεσης)
  • Αυτόματη σύνδεση χωρίς χρήση σεναρίου
  • Μη αυτόματη ενεργοποίηση με ένα κουμπί στο SecureCRT (δεν έχει ακόμη δημιουργηθεί και προστεθεί κουμπί στο SecureCRT)

Εκτέλεση χειροκίνητα από το μενού Script

Μενού SecureCRT => Σενάριο => Εκτέλεση…
- Τα τελευταία 10 σενάρια απομνημονεύονται και είναι διαθέσιμα για γρήγορη εκκίνηση:
Μενού SecureCRT => Σενάριο => 1 "Όνομα αρχείου σεναρίου"
Μενού SecureCRT => Σενάριο => 2 "Όνομα αρχείου σεναρίου"
Μενού SecureCRT => Σενάριο => 3 "Όνομα αρχείου σεναρίου"
Μενού SecureCRT => Σενάριο => 4 "Όνομα αρχείου σεναρίου"
Μενού SecureCRT => Σενάριο => 5 "Όνομα αρχείου σεναρίου"

Αυτόματη εκκίνηση μετά τη σύνδεση (σενάριο σύνδεσης)

Οι ρυθμίσεις σεναρίου αυτόματης καταγραφής έχουν διαμορφωθεί για την αποθηκευμένη περίοδο λειτουργίας: Σύνδεση => Ενέργειες σύνδεσης => Σενάριο σύνδεσης

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Αυτόματη σύνδεση χωρίς χρήση σεναρίου

Είναι δυνατή η αυτόματη εισαγωγή του ονόματος χρήστη του κωδικού πρόσβασης χωρίς εγγραφή σεναρίου, χρησιμοποιώντας μόνο την ενσωματωμένη λειτουργία του SecureCRT. Στις ρυθμίσεις σύνδεσης "Σύνδεση" => Ενέργειες σύνδεσης => Αυτοματοποίηση σύνδεσης - πρέπει να συμπληρώσετε πολλά πακέτα - που σημαίνουν τα ζεύγη: "Αναμενόμενο κείμενο" + "Απεσταλμένοι χαρακτήρες σε αυτό το κείμενο" μπορεί να υπάρχουν πολλά τέτοια ζεύγη. (Παράδειγμα: 1ο ζεύγος σε αναμονή για όνομα χρήστη, δεύτερο σε αναμονή για κωδικό πρόσβασης, τρίτο σε αναμονή για προτροπή προνομιακής λειτουργίας, τέταρτο ζεύγος για κωδικό πρόσβασης προνομιακής λειτουργίας.)

Παράδειγμα αυτόματης σύνδεσης στο Cisco ASA:

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Μη αυτόματη ενεργοποίηση με ένα κουμπί στο SecureCRT (δεν έχει ακόμη δημιουργηθεί και προστεθεί κουμπί στο SecureCRT)

Στο SecureCRT, μπορείτε να αντιστοιχίσετε ένα σενάριο σε ένα κουμπί. Το κουμπί προστίθεται σε έναν πίνακα που δημιουργήθηκε ειδικά για αυτό το σκοπό.

ΕΝΑ. Προσθήκη πίνακα στη διεπαφή: Μενού SecureCRT => Προβολή => Γραμμή κουμπιών
σι. Προσθέστε ένα κουμπί στον πίνακα και προσθέστε ένα σενάριο. – Κάντε δεξί κλικ στη γραμμή κουμπιών και επιλέξτε «Νέο κουμπί…» από το μενού περιβάλλοντος.
V. Στο πλαίσιο διαλόγου "Κουμπί χάρτη", στο πεδίο "Ενέργεια", επιλέξτε την ενέργεια (συνάρτηση) "Εκτέλεση σεναρίου".
Καθορίστε μια λεζάντα για το κουμπί. Το χρώμα για το εικονίδιο του κουμπιού. Ολοκληρώστε τις ρυθμίσεις κάνοντας κλικ στο Ok.

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Σημείωση:

Ο πίνακας με τα κουμπιά είναι πολύ χρήσιμη λειτουργικότητα.

1. Είναι δυνατό, κατά τη σύνδεση σε μια συγκεκριμένη περίοδο λειτουργίας, να καθορίσετε ποιο πλαίσιο θα ανοίξει σε αυτήν την καρτέλα από προεπιλογή.

2. Είναι δυνατό να ορίσετε προκαθορισμένες ενέργειες για τυπικές ενέργειες με εξοπλισμό: εμφάνιση εμφάνισης έκδοσης, εμφάνιση εκτέλεσης-διαμόρφωσης, αποθήκευση διαμόρφωσης.

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων
Δεν υπάρχει σενάριο συνδεδεμένο σε αυτά τα κουμπιά. Μόνο γραμμή δράσης:

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων
Ρύθμιση - έτσι ώστε κατά τη μετάβαση σε μια συνεδρία, να ανοίγει ο απαραίτητος πίνακας με κουμπιά στις ρυθμίσεις συνεδρίας:

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων
Είναι λογικό ο πελάτης να ρυθμίζει μεμονωμένα σενάρια για Σύνδεση και να πηγαίνει στον πίνακα με συχνές εντολές για τον προμηθευτή.

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων
Όταν πατάτε το κουμπί Go Cisco, ο πίνακας μεταβαίνει στη γραμμή κουμπιών Cisco.

Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων

Παραδείγματα χρήσης απλών και προηγμένων σεναρίων. (Πρακτική από την πραγματική ζωή.)

Τα απλά σενάρια είναι αρκετά για όλες σχεδόν τις περιστάσεις. Αλλά κάποτε χρειάστηκε να περιπλέξω λίγο το σενάριο - να επιταχύνω τη δουλειά. Αυτή η επιπλοκή απλώς ζήτησε πρόσθετα δεδομένα σε ένα παράθυρο διαλόγου από τον χρήστη.

Αίτημα δεδομένων από τον χρήστη χρησιμοποιώντας ένα παράθυρο διαλόγου

Είχα 2 στο σενάριο αιτήματος δεδομένων. Αυτό είναι το όνομα κεντρικού υπολογιστή και η 4η οκτάδα της διεύθυνσης IP. Για να εκτελέσω αυτήν την ενέργεια - έψαξα στο google πώς να την κάνω και τη βρήκα στον επίσημο ιστότοπο του SecureCRT (vandyke). - η λειτουργικότητα ονομάζεται άμεση.

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

Αυτό το μέρος του σεναρίου ζήτησε όνομα κεντρικού υπολογιστή και αριθμούς από την τελευταία οκτάδα. Αφού υπήρχαν 15 τεμάχια εξοπλισμού. Και τα δεδομένα παρουσιάστηκαν σε έναν πίνακα, στη συνέχεια αντέγραψα τις τιμές από τον πίνακα και τις επικόλλησα στα παράθυρα διαλόγου. Περαιτέρω το σενάριο λειτούργησε ανεξάρτητα.

Αντιγραφή FTP σε εξοπλισμό δικτύου.

Αυτό το σενάριο ξεκίνησε το παράθυρο εντολών μου (κέλυφος) και αντέγραψε δεδομένα μέσω FTP. Στο τέλος, κλείστε τη συνεδρία. Είναι αδύνατο να χρησιμοποιήσετε το σημειωματάριο για αυτό, επειδή η αντιγραφή διαρκεί πολύ χρόνο και τα δεδομένα στο buffer FTP δεν θα αποθηκευτούν για τόσο μεγάλο χρονικό διάστημα:

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

Εισαγωγή ονόματος χρήστη/κωδικού πρόσβασης χρησιμοποιώντας ένα σενάριο

Σε έναν πελάτη η απευθείας πρόσβαση στον εξοπλισμό δικτύου έκλεισε. Ήταν δυνατή η είσοδος στον εξοπλισμό συνδέοντας πρώτα στην Προεπιλεγμένη πύλη και από αυτήν στη συνέχεια στον εξοπλισμό που ήταν συνδεδεμένος σε αυτήν. Ο πελάτης ssh που είναι ενσωματωμένος στο λογισμικό IOS/υλισμικού χρησιμοποιήθηκε για τη σύνδεση. Αντίστοιχα, ζητήθηκαν το όνομα χρήστη και ο κωδικός πρόσβασης στην κονσόλα. Με το παρακάτω σενάριο, το όνομα χρήστη και ο κωδικός πρόσβασης εισήχθησαν αυτόματα:

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

Σημείωση: Υπήρχαν 2 σενάρια, το ένα για τον λογαριασμό διαχειριστή και το δεύτερο για τον λογαριασμό eSIGHT.

Σενάριο με δυνατότητα άμεσης προσθήκης δεδομένων κατά την εκτέλεση του σεναρίου.

Το καθήκον ήταν να προστεθεί μια στατική διαδρομή σε όλο τον εξοπλισμό δικτύου. Αλλά η πύλη στο Διαδίκτυο σε κάθε εξοπλισμό ήταν διαφορετική (και διέφερε από την προεπιλεγμένη πύλη). Το ακόλουθο σενάριο εμφάνισε τον πίνακα δρομολόγησης, μπήκε στη λειτουργία διαμόρφωσης, δεν έγραψε την εντολή μέχρι το τέλος (τη διεύθυνση IP της πύλης στο Διαδίκτυο) - Πρόσθεσα αυτό το μέρος. Αφού πάτησα το Enter, το σενάριο συνέχισε να εκτελεί την εντολή.

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

Σε αυτό το σενάριο, στη γραμμή: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") η διεύθυνση IP της πύλης δεν προστίθεται και δεν υπάρχει χαρακτήρας επιστροφής μεταφοράς. Το σενάριο περιμένει την επόμενη γραμμή με τους χαρακτήρες "(config) #" Αυτοί οι χαρακτήρες εμφανίστηκαν αφού εισήγαγα τη διεύθυνση IP και εισάγω.

Συμπέρασμα:

Κατά τη σύνταξη ενός σεναρίου και την εκτέλεσή του, πρέπει να τηρείται ο κανόνας: Ο χρόνος για τη σύνταξη ενός σεναρίου και την εκτέλεση ενός σεναρίου δεν πρέπει ποτέ να είναι μεγαλύτερος από τον θεωρητικά χρόνο που αφιερώνεται για την εκτέλεση της ίδιας εργασίας με το χέρι (αντιγραφή/επικόλληση από σημειωματάριο, εγγραφή και διόρθωση σφαλμάτων ένα βιβλίο για ansible, γραφή και εντοπισμό σφαλμάτων σε σενάριο python). Δηλαδή, η χρήση του σεναρίου θα πρέπει να εξοικονομεί χρόνο και να μην σπαταλά χρόνο σε μια εφάπαξ αυτοματοποίηση των διαδικασιών (δηλαδή, όταν το σενάριο είναι μοναδικό και δεν θα υπάρχει πια επανάληψη). Αλλά αν το σενάριο είναι μοναδικό και ο αυτοματισμός με το σενάριο και η σύνταξη / αποσφαλμάτωση του σεναρίου απαιτεί λιγότερο χρόνο από ό,τι το να το κάνεις με οποιονδήποτε άλλο τρόπο (ansible, παράθυρο εντολών), τότε το σενάριο είναι η καλύτερη λύση.
Εντοπισμός σφαλμάτων ενός σεναρίου. Το σενάριο μεγαλώνει σταδιακά, ο εντοπισμός σφαλμάτων πραγματοποιείται κατά την εκτέλεση στην πρώτη, δεύτερη, τρίτη συσκευή και μέχρι την τέταρτη το σενάριο πιθανότατα θα είναι πλήρως λειτουργικό.

Η εκτέλεση ενός σεναρίου (εισαγωγή ονόματος χρήστη+κωδικού πρόσβασης) με το ποντίκι είναι συνήθως πιο γρήγορη από την αντιγραφή ονόματος χρήστη και κωδικού πρόσβασης από ένα σημειωματάριο. Αλλά δεν είναι ασφαλές από άποψη ασφάλειας.
Ένα άλλο (πραγματικό) παράδειγμα όταν χρησιμοποιείτε σενάριο: Δεν έχετε άμεση πρόσβαση σε εξοπλισμό δικτύου. Ωστόσο, υπάρχει ανάγκη διαμόρφωσης όλου του εξοπλισμού δικτύου (φέρτε τον στο σύστημα παρακολούθησης, διαμορφώστε ένα πρόσθετο Όνομα χρήστη/κωδικό πρόσβασης/snmpv3όνομα χρήστη/κωδικό πρόσβασης). Υπάρχει πρόσβαση όταν πηγαίνετε στο διακόπτη Core, από αυτόν ανοίγετε το SSH σε άλλο εξοπλισμό. Γιατί δεν μπορείτε να χρησιμοποιήσετε το Ansible. - Επειδή αντιμετωπίζουμε ένα όριο στον αριθμό των επιτρεπόμενων ταυτόχρονων περιόδων σύνδεσης σε εξοπλισμό δικτύου (γραμμή vty 0 4, διεπαφή χρήστη vty 0 4) (μια άλλη ερώτηση είναι πώς να ξεκινήσετε διαφορετικό εξοπλισμό στο Ansible με το ίδιο SSH first hop).

Το σενάριο μειώνει τον χρόνο κατά τη διάρκεια μεγάλων λειτουργιών - για παράδειγμα, αντιγραφή αρχείων μέσω FTP. Αφού ολοκληρωθεί η αντιγραφή, το σενάριο ξεκινά αμέσως να λειτουργεί. Ένα άτομο θα πρέπει να δει το τέλος της αντιγραφής, μετά να συνειδητοποιήσει το τέλος της αντιγραφής και μετά να εισαγάγει τις κατάλληλες εντολές. Το σενάριο το κάνει αντικειμενικά πιο γρήγορα.

Τα σενάρια ισχύουν όπου είναι αδύνατη η χρήση εργαλείων μαζικής παράδοσης δεδομένων: Κονσόλα. Ή όταν ορισμένα από τα δεδομένα για τον εξοπλισμό είναι μοναδικά: όνομα κεντρικού υπολογιστή, διεύθυνση IP διαχείρισης. Ή κατά τη σύνταξη ενός προγράμματος και τον εντοπισμό σφαλμάτων είναι πιο δύσκολο από την προσθήκη δεδομένων που λαμβάνονται από τον εξοπλισμό ενώ εκτελείται το σενάριο. - Ένα παράδειγμα με ένα σενάριο για τη συνταγογράφηση μιας διαδρομής, όταν κάθε εξοπλισμός έχει τη δική του διεύθυνση IP του παρόχου Διαδικτύου. (Οι συνάδελφοί μου έγραψαν τέτοια σενάρια - όταν η ομιλία DMVPN ήταν πάνω από 3. Ήταν απαραίτητο να αλλάξουμε τις ρυθμίσεις DMVPN).

Μελέτη περίπτωσης: Διαμόρφωση αρχικών ρυθμίσεων σε νέο διακόπτη χρησιμοποιώντας τις θύρες της κονσόλας:

A. Συνδέστε το καλώδιο της κονσόλας στη συσκευή.
Β. Εκτελέστε το σενάριο
Β. Περίμενε την εκτέλεση του σεναρίου
Δ. Συνδέστε το καλώδιο της κονσόλας στην επόμενη συσκευή.
Ε. Εάν ο διακόπτης δεν είναι ο τελευταίος, μεταβείτε στο βήμα Β.

Ως αποτέλεσμα της δουλειάς του σεναρίου:

  • ο αρχικός κωδικός πρόσβασης ορίζεται στον εξοπλισμό.
  • Εισάχθηκε το όνομα χρήστη
  • εισάγεται η μοναδική διεύθυνση IP της συσκευής.

Υ.Γ η επέμβαση έπρεπε να επαναληφθεί. Επειδή το προεπιλεγμένο ssh δεν ρυθμίστηκε/απενεργοποιήθηκε. (Ναι, αυτό είναι λάθος μου.)

Χρησιμοποιημένες πηγές.

1. Σχετικά με τη δημιουργία σεναρίων
2. Παραδείγματα σεναρίων

Παράρτημα 1: Δείγματα σεναρίων.


Ένα παράδειγμα μεγάλου σεναρίου, με δύο ερωτήματα: Όνομα κεντρικού υπολογιστή και διεύθυνση IP. Δημιουργήθηκε για προρύθμιση εξοπλισμού μέσω της κονσόλας (9600 baud). Και επίσης να προετοιμάσει τη σύνδεση του εξοπλισμού στο δίκτυο.

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

Τέτοια σενάρια συνήθως δεν χρειάζονται, αλλά η ποσότητα του εξοπλισμού είναι 15 τεμ. Επιτρέπεται η ταχύτερη ρύθμιση. Ήταν πιο γρήγορο να ρυθμίσετε τον εξοπλισμό χρησιμοποιώντας το παράθυρο εντολών SecureCRT.

Δημιουργία λογαριασμού για ssh.

Ενα άλλο παράδειγμα. Η διαμόρφωση γίνεται επίσης μέσω της κονσόλας.

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


Σχετικά με το SecureCRT:Λογισμικό επί πληρωμή: από 99 $ (η μικρότερη τιμή είναι μόνο για το SecureCRT για ένα χρόνο)
Επίσημη ιστοσελίδα
Μια άδεια χρήσης λογισμικού αγοράζεται μία φορά, με υποστήριξη (για ενημέρωση), και στη συνέχεια το λογισμικό χρησιμοποιείται με αυτήν την άδεια για απεριόριστο χρόνο.

Λειτουργεί σε λειτουργικά συστήματα Mac OS X και Windows.

Υπάρχει υποστήριξη σεναρίων (αυτό το άρθρο)
Υπάρχει Παράθυρο εντολών
Serial/Telnet/SSH1/SSH2/Λειτουργικό σύστημα Shell

Πηγή: www.habr.com