Χρήση σεναρίων Shell για αυτοματοποίηση εργασιών συντήρησης συστήματος Linux
Πριν από λίγο καιρό διάβασα ότι ένα από τα διακριτικά χαρακτηριστικά ενός αποτελεσματικού διαχειριστή / μηχανικού συστήματος είναι η τεμπελιά. Φαινόταν λίγο αντιφατικό στην αρχή, αλλά στη συνέχεια ο συγγραφέας προχώρησε στην εξήγηση του γιατί:
Σειρά RHCE: Αυτοματοποίηση εργασιών συντήρησης συστήματος Linux - Μέρος 4
εάν ένας διαχειριστής αφιερώνει τον περισσότερο χρόνο του στην επίλυση ζητημάτων και την επαναλαμβανόμενη εργασία, μπορείτε να υποψιαστείτε ότι δεν κάνει τα πράγματα σωστά. Με άλλα λόγια, ένας αποτελεσματικός διαχειριστής συστήματος / μηχανικός θα πρέπει να αναπτύξει ένα σχέδιο για την εκτέλεση επαναλαμβανόμενων εργασιών με όσο το δυνατόν λιγότερη δράση από την πλευρά του / της και θα πρέπει να προβλέπει προβλήματα χρησιμοποιώντας,
για παράδειγμα, τα εργαλεία που εξετάστηκαν στο Μέρος 3 - Παρακολούθηση αναφορών δραστηριότητας συστήματος χρησιμοποιώντας Linux Toolsets αυτής της σειράς. Έτσι, αν και μπορεί να μην φαίνεται να κάνει πολλά, είναι επειδή οι περισσότερες από τις ευθύνες του / της έχουν φροντίστηκε με τη βοήθεια του σεναρίου κελύφους, για αυτό θα μιλήσουμε σε αυτό φροντιστήριο.
Τι είναι το σενάριο shell;
Με λίγα λόγια, ένα σενάριο κελύφους δεν είναι τίποτα περισσότερο και τίποτα λιγότερο από ένα πρόγραμμα που εκτελείται βήμα προς βήμα από ένα κέλυφος, το οποίο είναι ένα άλλο πρόγραμμα που παρέχει ένα επίπεδο διεπαφής μεταξύ του πυρήνα του Linux και του τέλους χρήστης.
Από προεπιλογή, το κέλυφος που χρησιμοποιείται για λογαριασμούς χρηστών στο RHEL 7 είναι bash (/bin/bash). Εάν θέλετε μια λεπτομερή περιγραφή και κάποιο ιστορικό ιστορικό, μπορείτε να ανατρέξετε αυτό το άρθρο της Wikipedia.
Για να μάθετε περισσότερα σχετικά με το τεράστιο σύνολο δυνατοτήτων που παρέχει αυτό το κέλυφος, ίσως θελήσετε να το ελέγξετε ανδρική σελίδα, το οποίο κατεβάζεται σε μορφή PDF στη διεύθυνση (Εντολές Bash). Εκτός από αυτό, υποτίθεται ότι είστε εξοικειωμένοι με τις εντολές Linux (αν όχι, σας συνιστώ ανεπιφύλακτα να περάσετε Οδηγός από αρχάριους στο SysAdmin άρθρο στο Tecmint.com πριν προχωρήσετε). Τώρα ας ξεκινήσουμε.
Σύνταξη σεναρίου για την εμφάνιση πληροφοριών συστήματος
Για τη διευκόλυνσή μας, ας δημιουργήσουμε έναν κατάλογο για να αποθηκεύσουμε τα σενάρια κελύφους μας:
# σενάρια mkdir. # σενάρια cd.
Και ανοίξτε ένα νέο αρχείο κειμένου με όνομα system_info.sh με τον επεξεργαστή κειμένου που προτιμάτε. Θα ξεκινήσουμε εισάγοντας μερικά σχόλια στο επάνω μέρος και μερικές εντολές στη συνέχεια:
#!/bin/bash # Δείγμα σεναρίου γραμμένο για το Μέρος 4 της σειράς RHCE. # Αυτό το σενάριο θα επιστρέψει το ακόλουθο σύνολο πληροφοριών συστήματος: # -Πληροφορίες ονόματος: echo -e "\ e [31; 43m ***** ΠΛΗΡΟΦΟΡΙΕΣ ΓΙΑ ΤΟ ΟΙΚΟΝΟΜΙΚΟ***** \ e [0μ » hostnamectl. ηχώ "" # -Χρήση χώρου στο δίσκο συστήματος: echo -e "\ e [31; 43m *****ΧΡΗΣΗ ΧΩΡΟΥ ΔΙΣΚΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΟΥ***** \ e [0μ » df -h ηχώ "" # -Δωρεάν και χρησιμοποιημένη μνήμη στο σύστημα: echo -e "\ e [31; 43m *****ΔΩΡΕΑΝ ΚΑΙ ΧΡΗΣΙΜΗ ΜΝΗΜΗ***** \ e [0μ » Ελεύθερος. ηχώ "" # -Χρόνος λειτουργίας και φόρτωση συστήματος: echo -e "\ e [31; 43m *****ΣΥΣΤΗΜΑ UPTIME ΚΑΙ ΦΟΡΤΩΣΗ***** \ e [0μ » uptime ηχώ "" # -Συνδεδεμένοι χρήστες: echo -e "\ e [31; 43m *****ΠΡΟΣΦΟΡΑ ΧΡΗΣΤΕΣ ΣΥΝΔΕΣΜΕΝΟΙ***** \ e [0μ » που. ηχώ "" # -Κορυφαίες 5 διαδικασίες όσον αφορά τη χρήση της μνήμης. ηχώ -ε "\ e [31; 43μ *****TOP 5 ΔΙΑΔΙΚΑΣΙΕΣ ΜΝΗΜΗΣ-ΚΑΤΑΝΑΛΩΣΗΣ***** \ e [0μ » ps -eo%mem,%cpu, comm -ταξινόμηση = -%mem | κεφάλι -n 6. ηχώ "" ηχώ -e "\ e [1; 32m Τέλος. \ e [0m"
Στη συνέχεια, δώστε στο σενάριο δικαιώματα εκτέλεσης:
# chmod +x system_info.sh.
και τρέξτε το:
./system_info.sh.
Σημειώστε ότι οι κεφαλίδες κάθε ενότητας εμφανίζονται με χρώμα για καλύτερη απεικόνιση:
Σενάριο παρακολούθησης διακομιστή Shell
Αυτή η λειτουργικότητα παρέχεται από αυτήν την εντολή:
ηχώ -ε "\ e [ΧΡΩΜΑ1; ΧΡΩΜΑ2μ\ e [0μ »
Οπου ΧΡΩΜΑ 1 και ΧΡΩΜΑ 2 είναι τα χρώματα του προσκηνίου και του φόντου, αντίστοιχα (περισσότερες πληροφορίες και επιλογές εξηγούνται σε αυτήν την καταχώριση από το Arch Linux Wiki) και είναι η συμβολοσειρά που θέλετε να εμφανίζεται με χρώμα.
Αυτοματοποίηση εργασιών
Οι εργασίες που μπορεί να χρειαστεί να αυτοματοποιήσετε μπορεί να διαφέρουν από περίπτωση σε περίπτωση. Έτσι, δεν μπορούμε πιθανώς να καλύψουμε όλα τα πιθανά σενάρια σε ένα μόνο άρθρο, αλλά θα παρουσιάσουμε τρεις κλασικές εργασίες που μπορούν να αυτοματοποιηθούν με τη χρήση κειμένου δέσμης ενεργειών:
1) ενημερώστε την τοπική βάση δεδομένων αρχείων, 2) βρείτε (και εναλλακτικά διαγράψτε) αρχεία με 777 δικαιώματα, και 3) ειδοποίηση όταν η χρήση του συστήματος αρχείων ξεπεράσει ένα καθορισμένο όριο.
Ας δημιουργήσουμε ένα αρχείο με όνομα auto_tasks.sh στον κατάλογο σεναρίων μας με το ακόλουθο περιεχόμενο:
#!/bin/bash # Δείγμα σεναρίου για αυτοματοποίηση εργασιών: # -Ενημέρωση βάσης δεδομένων τοπικού αρχείου: echo -e "\ e [4; 32mΕΝΗΜΕΡΩΣΗ ΒΑΣΕΩΝ ΤΟΠΙΚΟΥ ΑΡΧΕΙΟΥ\ e [0μ » ενημερωμένοβ. αν [$? == 0 ]; στη συνέχεια, ηχώ "Η βάση δεδομένων τοπικού αρχείου ενημερώθηκε σωστά." else echo "Η τοπική βάση δεδομένων αρχείων δεν ενημερώθηκε σωστά." fi echo "" # -Βρείτε και / ή διαγράψτε αρχεία με 777 δικαιώματα. ηχώ -ε "\ e [4; 32μΑΝΑΖΗΤΗΣΗ ΑΡΧΕΙΩΝ ΜΕ 777 ΑΔΕΙΕΣ\ e [0μ » # Ενεργοποίηση οποιασδήποτε επιλογής (σχολιάστε την άλλη γραμμή), αλλά όχι και τις δύο. # Επιλογή 1: Διαγράψτε αρχεία χωρίς να ζητήσετε επιβεβαίωση. Υποθέτει την έκδοση εύρεσης GNU. #find -type f -perm 0777 -διαγραφή. # Επιλογή 2: Ζητήστε επιβεβαίωση πριν διαγράψετε αρχεία. Πιο φορητό σε όλα τα συστήματα. εύρεση -τύπου f -perm 0777 -exec rm -i {} +; ηχώ "" # -Ειδοποίηση όταν η χρήση του συστήματος αρχείων ξεπεράσει ένα καθορισμένο όριο ηχώ -e "\ e [4; 32μΕΛΕΓΧΟΣ ΧΡΗΣΗΣ ΣΥΣΤΗΜΑΤΟΣ ΑΡΧΕΙΟΥ\ e [0μ » THRESHOLD = 30. ενώ διαβάζετε γραμμή? do # Αυτή η μεταβλητή αποθηκεύει τη διαδρομή του συστήματος αρχείων ως συμβολοσειρά FILESYSTEM = $ (echo $ line | awk '{print $ 1}') # This η μεταβλητή αποθηκεύει το ποσοστό χρήσης (XX %) PERCENTAGE = $ (echo $ line | awk '{print $ 5}') # Ποσοστό χρήσης χωρίς το % σημάδι. USAGE = $ {PERCENTAGE%;} αν [$ USAGE -gt $ THRESHOLD]; έπειτα ηχώ "Ο υπόλοιπος διαθέσιμος χώρος στο $ FILESYSTEM είναι εξαιρετικά χαμηλός. Χρησιμοποιήθηκε: $ PERCENTAGE "fi. ολοκληρωμένο <
Λάβετε υπόψη ότι υπάρχει κενό μεταξύ των δύο < σημάδια στην τελευταία γραμμή του σεναρίου.
Σενάριο Shell για εύρεση 777 δικαιωμάτων
Χρησιμοποιώντας το Cron
Για να πάρετε την αποτελεσματικότητα ένα βήμα παραπέρα, δεν θα θέλετε να καθίσετε μπροστά στον υπολογιστή σας και να εκτελέσετε αυτά τα σενάρια χειροκίνητα. Μάλλον, θα χρησιμοποιήσετε cron για να προγραμματίσετε αυτές τις εργασίες να εκτελούνται σε περιοδική βάση και στέλνει τα αποτελέσματα σε μια προκαθορισμένη λίστα παραληπτών μέσω email ή να τα αποθηκεύσετε σε ένα αρχείο που μπορεί να προβληθεί χρησιμοποιώντας ένα πρόγραμμα περιήγησης ιστού.
Το παρακάτω σενάριο (filesystem_usage.sh) θα εκτελέσει το γνωστό df -h εντολή, μορφοποιήστε την έξοδο σε πίνακα HTML και αποθηκεύστε την στο report.html αρχείο:
#!/bin/bash. # Δείγμα σεναρίου για την επίδειξη της δημιουργίας μιας αναφοράς HTML χρησιμοποιώντας σενάριο κελύφους. # Κατάλογος Ιστού. WEB_DIR =/var/www/html. # Λίγη διάταξη CSS και πίνακα για να κάνετε την έκθεση να φαίνεται λίγο πιο όμορφη. ηχώ ""> $ WEB_DIR/report.html. # Δείτε το όνομα κεντρικού υπολογιστή και τοποθετήστε το στο επάνω μέρος του σώματος html. HOST = $ (όνομα κεντρικού υπολογιστή) echo "Χρήση συστήματος αρχείων για κεντρικό υπολογιστή$ HOST
Τελευταία ενημέρωση: $ (ημερομηνία)
Σύστημα αρχείων
Μέγεθος
Χρήση %
">> $ WEB_DIR/report.html. # Διαβάστε την έξοδο του df -h γραμμή προς γραμμή. ενώ διαβάζετε γραμμή? κάνω. ηχώ "
Στο δικό μας RHEL 7 διακομιστής (192.168.0.18), αυτό φαίνεται ως εξής:
Αναφορά παρακολούθησης διακομιστή
Μπορείτε να προσθέσετε σε αυτήν την αναφορά όσες πληροφορίες θέλετε. Για να τρέχετε το σενάριο κάθε μέρα στο 1:30 μ.μ, προσθέστε την ακόλουθη καταχώριση crontab:
30 13 * * * /root/scripts/filesystem_usage.sh.
Περίληψη
Πιθανότατα θα σκεφτείτε αρκετές άλλες εργασίες που θέλετε ή πρέπει να αυτοματοποιήσετε. όπως μπορείτε να δείτε, η χρήση κειμένου δέσμης ενεργειών θα απλοποιήσει σημαντικά αυτήν την προσπάθεια. Μη διστάσετε να μας ενημερώσετε εάν θεωρείτε χρήσιμο αυτό το άρθρο και μην διστάσετε να προσθέσετε τις δικές σας ιδέες ή σχόλια μέσω της παρακάτω φόρμας.