Αυτοματοποίηση καταχώρισης στο SecureCRT με χρήση σεναρίων
Οι μηχανικοί δικτύου αντιμετωπίζουν συχνά το καθήκον της αντιγραφής/επικόλλησης ορισμένων τμημάτων από ένα σημειωματάριο στην κονσόλα. Συνήθως πρέπει να αντιγράψετε πολλές παραμέτρους: Όνομα χρήστη/Κωδικό πρόσβασης και κάτι άλλο. Η χρήση σεναρίων σάς επιτρέπει να επιταχύνετε αυτή τη διαδικασία. ΑΛΛΑ οι εργασίες της συγγραφής του σεναρίου και της εκτέλεσης του σεναρίου θα πρέπει να χρειάζονται λιγότερο χρόνο συνολικά από τη μη αυτόματη ρύθμιση παραμέτρων, διαφορετικά τα σενάρια είναι άχρηστα.
Σε τι χρησιμεύει αυτό το άρθρο; Αυτό το άρθρο προέρχεται από τη σειρά Fast Start και στοχεύει στην εξοικονόμηση χρόνου από τους μηχανικούς δικτύου κατά την εγκατάσταση εξοπλισμού (μία εργασία) σε πολλές συσκευές. Χρησιμοποιεί λογισμικό SecureCRT και ενσωματωμένη λειτουργία εκτέλεσης σεναρίου. περιεχόμενο
Το πρόγραμμα SecureCRT έχει έναν ενσωματωμένο μηχανισμό εκτέλεσης σεναρίου από το κουτί. Σε τι χρησιμεύουν τα σενάρια τερματικού;
Αυτοματοποιημένη I/O και ελάχιστη επικύρωση I/O.
Επιταχύνετε την εκτέλεση εργασιών ρουτίνας - μειώνοντας τις παύσεις μεταξύ των ρυθμίσεων του εξοπλισμού. (De facto μείωση των παύσεων που προκαλούνται από το χρόνο για την εκτέλεση ενεργειών αντιγραφής/προηγούμενων ενεργειών στο ίδιο υλικό, με 3 ή περισσότερα τμήματα εντολών που θα εφαρμοστούν στο υλικό.)
Αυτό το έγγραφο καλύπτει τις εργασίες:
Δημιουργία απλών σεναρίων.
Εκτέλεση σεναρίων στο SecureCRT.
Παραδείγματα χρήσης απλών και προηγμένων σεναρίων. (Πρακτική από την πραγματική ζωή.)
Δημιουργία απλών σεναρίων.
Τα πιο απλά σενάρια χρησιμοποιούν μόνο δύο εντολές, Send και WaitForString. Αυτή η λειτουργία είναι αρκετή για το 90% (ή περισσότερο) των εργασιών που εκτελούνται.
Τα σενάρια μπορούν να λειτουργήσουν σε Python, JS, VBS (Visual Basic), Perl κ.λπ.
# $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.
Μετά τη δημιουργία/επεξεργασία του σεναρίου, τίθεται ένα λογικό ερώτημα: Πώς να εφαρμόσετε το σενάριο;
Υπάρχουν διάφοροι τρόποι:
Εκτέλεση χειροκίνητα από το μενού Script
Αυτόματη εκκίνηση μετά τη σύνδεση (σενάριο σύνδεσης)
Αυτόματη σύνδεση χωρίς χρήση σεναρίου
Μη αυτόματη ενεργοποίηση με ένα κουμπί στο SecureCRT (δεν έχει ακόμη δημιουργηθεί και προστεθεί κουμπί στο SecureCRT)
Αυτόματη εκκίνηση μετά τη σύνδεση (σενάριο σύνδεσης)
Οι ρυθμίσεις σεναρίου αυτόματης καταγραφής έχουν διαμορφωθεί για την αποθηκευμένη περίοδο λειτουργίας: Σύνδεση => Ενέργειες σύνδεσης => Σενάριο σύνδεσης
Αυτόματη σύνδεση χωρίς χρήση σεναρίου
Είναι δυνατή η αυτόματη εισαγωγή του ονόματος χρήστη του κωδικού πρόσβασης χωρίς εγγραφή σεναρίου, χρησιμοποιώντας μόνο την ενσωματωμένη λειτουργία του SecureCRT. Στις ρυθμίσεις σύνδεσης "Σύνδεση" => Ενέργειες σύνδεσης => Αυτοματοποίηση σύνδεσης - πρέπει να συμπληρώσετε πολλά πακέτα - που σημαίνουν τα ζεύγη: "Αναμενόμενο κείμενο" + "Απεσταλμένοι χαρακτήρες σε αυτό το κείμενο" μπορεί να υπάρχουν πολλά τέτοια ζεύγη. (Παράδειγμα: 1ο ζεύγος σε αναμονή για όνομα χρήστη, δεύτερο σε αναμονή για κωδικό πρόσβασης, τρίτο σε αναμονή για προτροπή προνομιακής λειτουργίας, τέταρτο ζεύγος για κωδικό πρόσβασης προνομιακής λειτουργίας.)
Παράδειγμα αυτόματης σύνδεσης στο Cisco ASA:
Μη αυτόματη ενεργοποίηση με ένα κουμπί στο SecureCRT (δεν έχει ακόμη δημιουργηθεί και προστεθεί κουμπί στο SecureCRT)
Στο SecureCRT, μπορείτε να αντιστοιχίσετε ένα σενάριο σε ένα κουμπί. Το κουμπί προστίθεται σε έναν πίνακα που δημιουργήθηκε ειδικά για αυτό το σκοπό.
ΕΝΑ. Προσθήκη πίνακα στη διεπαφή: Μενού SecureCRT => Προβολή => Γραμμή κουμπιών
σι. Προσθέστε ένα κουμπί στον πίνακα και προσθέστε ένα σενάριο. – Κάντε δεξί κλικ στη γραμμή κουμπιών και επιλέξτε «Νέο κουμπί…» από το μενού περιβάλλοντος.
V. Στο πλαίσιο διαλόγου "Κουμπί χάρτη", στο πεδίο "Ενέργεια", επιλέξτε την ενέργεια (συνάρτηση) "Εκτέλεση σεναρίου".
Καθορίστε μια λεζάντα για το κουμπί. Το χρώμα για το εικονίδιο του κουμπιού. Ολοκληρώστε τις ρυθμίσεις κάνοντας κλικ στο Ok.
Σημείωση:
Ο πίνακας με τα κουμπιά είναι πολύ χρήσιμη λειτουργικότητα.
1. Είναι δυνατό, κατά τη σύνδεση σε μια συγκεκριμένη περίοδο λειτουργίας, να καθορίσετε ποιο πλαίσιο θα ανοίξει σε αυτήν την καρτέλα από προεπιλογή.
2. Είναι δυνατό να ορίσετε προκαθορισμένες ενέργειες για τυπικές ενέργειες με εξοπλισμό: εμφάνιση εμφάνισης έκδοσης, εμφάνιση εκτέλεσης-διαμόρφωσης, αποθήκευση διαμόρφωσης.
Δεν υπάρχει σενάριο συνδεδεμένο σε αυτά τα κουμπιά. Μόνο γραμμή δράσης:
Ρύθμιση - έτσι ώστε κατά τη μετάβαση σε μια συνεδρία, να ανοίγει ο απαραίτητος πίνακας με κουμπιά στις ρυθμίσεις συνεδρίας:
Είναι λογικό ο πελάτης να ρυθμίζει μεμονωμένα σενάρια για Σύνδεση και να πηγαίνει στον πίνακα με συχνές εντολές για τον προμηθευτή.
Όταν πατάτε το κουμπί Go Cisco, ο πίνακας μεταβαίνει στη γραμμή κουμπιών Cisco.
Παραδείγματα χρήσης απλών και προηγμένων σεναρίων. (Πρακτική από την πραγματική ζωή.)
Τα απλά σενάρια είναι αρκετά για όλες σχεδόν τις περιστάσεις. Αλλά κάποτε χρειάστηκε να περιπλέξω λίγο το σενάριο - να επιταχύνω τη δουλειά. Αυτή η επιπλοκή απλώς ζήτησε πρόσθετα δεδομένα σε ένα παράθυρο διαλόγου από τον χρήστη.
Αίτημα δεδομένων από τον χρήστη χρησιμοποιώντας ένα παράθυρο διαλόγου
Είχα 2 στο σενάριο αιτήματος δεδομένων. Αυτό είναι το όνομα κεντρικού υπολογιστή και η 4η οκτάδα της διεύθυνσης IP. Για να εκτελέσω αυτήν την ενέργεια - έψαξα στο google πώς να την κάνω και τη βρήκα στον επίσημο ιστότοπο του SecureCRT (vandyke). - η λειτουργικότητα ονομάζεται άμεση.
Αυτό το μέρος του σεναρίου ζήτησε όνομα κεντρικού υπολογιστή και αριθμούς από την τελευταία οκτάδα. Αφού υπήρχαν 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 δεν ρυθμίστηκε/απενεργοποιήθηκε. (Ναι, αυτό είναι λάθος μου.)
Ένα παράδειγμα μεγάλου σεναρίου, με δύο ερωτήματα: Όνομα κεντρικού υπολογιστή και διεύθυνση IP. Δημιουργήθηκε για προρύθμιση εξοπλισμού μέσω της κονσόλας (9600 baud). Και επίσης να προετοιμάσει τη σύνδεση του εξοπλισμού στο δίκτυο.
Τέτοια σενάρια συνήθως δεν χρειάζονται, αλλά η ποσότητα του εξοπλισμού είναι 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