Τα παράξενα που ονομάζεται «εδώ εγγράφων» σας επιτρέπουν να χρησιμοποιήσετε εισόδου / εξόδου ανακατεύθυνση στο εσωτερικό σενάρια Bash για Linux. Είναι ένας πολύ καλός τρόπος για να αυτοματοποιήσει τις εντολές που χρειάζεστε για να τρέξει σε έναν απομακρυσμένο υπολογιστή.
εδώ να Έγγραφα
Πολλές εντολές στο Linux έχουν δύο ή τρία ονόματα-mail. Αυτό είναι εν μέρει αυτό που δημιουργεί την αντίληψη ότι το Linux είναι δύσκολο να μάθουν και γεμάτη απόκρυφα εντολές. Αλλά ένα από τα πιο περίεργα ονόματα στο Linux δεν είναι ένα από τα κρυφά τα σύντομα ταξίδια. «Εδώ έγγραφα» δεν είναι έγγραφα, και δεν είναι πραγματικά σαφές τι το «εδώ» αναφέρεται, ούτε.
Πρόκειται για μια σχετικά σκοτεινή κατασκεύασμα, αλλά είναι χρήσιμα. Φυσικά, αυτό είναι το Linux, οπότε υπάρχουν περισσότεροι από ένας τρόπος για να δέρμα μια γάτα. Μερικές από τις λειτουργίες που παρέχονται από εδώ τα έγγραφα μπορούν να αναπαραχθούν με άλλους τρόπους. Αυτές οι εναλλακτικές μέθοδοι είναι συνήθως πιο περίπλοκη. Στον προγραμματισμό και την scripting, «πιο περίπλοκη» και σημαίνει «πιο επιρρεπείς σε σφάλματα,» και ότι ο κωδικός σας είναι πιο δύσκολο να διατηρηθεί.
Όπου εδώ έγγραφα πραγματικά excel είναι στην αυτοματοποίηση των εντολών που θέλετε να στείλετε σε έναν απομακρυσμένο υπολογιστή από μια σύνδεση που μέσα από μια δέσμη ενεργειών. Κάνοντας τη σύνδεση είναι εύκολο, αλλά όταν η σύνδεση έχει γίνει, πώς θα «αντλία» εντολές σας από το script σας στο κέλυφος στον απομακρυσμένο υπολογιστή; Εδώ έγγραφα που σας επιτρέπουν να το κάνουμε αυτό πολύ απλά.
Βασικές Αρχές Εδώ Έγγραφα
Η ιδιωματική αναπαράσταση ενός εγγράφου εδώ μοιάζει με αυτό:
Command & lt? & Lt? limit_string . . κείμενο δεδομένα μεταβλητές . . limit_string
-
ΕΝΤΟΛΗ
: Αυτό μπορεί να είναι οποιαδήποτε εντολή Linux που δέχεται ανακατεύθυνσης εισόδου. Σημείωση, η
ηχώεντολή δεν δέχεται ανακατευθυνόμενους εισόδου . Αν χρειαστεί να γράφουν στην οθόνη, μπορείτε να χρησιμοποιήσετε τοΓάταεντολή, το οποίο κάνει . - & Lt? & Lt? : Ο χειριστής ανακατεύθυνση.
- limit_string : Αυτή είναι μια ετικέτα. Μπορεί να είναι ό, τι θέλετε για όσο διάστημα δεν εμφανίζεται στη λίστα σας δεδομένα ανακατεύθυνση είστε στην εντολή. Χρησιμοποιείται για να σηματοδοτήσει το τέλος του κειμένου, δεδομένων, και η λίστα των μεταβλητών.
- Λίστα δεδομένων : Μια λίστα των δεδομένων που πρόκειται να τροφοδοτηθεί στην εντολή. Μπορεί να περιέχει εντολές, κείμενο και μεταβλητές. Τα περιεχόμενα του καταλόγου δεδομένων που τροφοδοτείται στην μία γραμμή εντολών κάθε φορά μέχρι συναντάται η _limit_string.
Πιθανότατα θα δείτε παραδείγματα εδώ έγγραφα ότι η χρήση «ΕΟΦ», όπως το όριο κορδόνι. Εμείς δεν ευνοούν αυτή την προσέγγιση. Λειτουργεί, αλλά «ΕΟΦ» μέσα «στο τέλος του αρχείου.» Εκτός από τη σπάνια περίπτωση κατά την οποία ένα έγγραφο στο σπίτι είναι το τελευταίο πράγμα που σε ένα αρχείο δέσμης ενεργειών, «ΕΟΦ» χρησιμοποιείται λανθασμένα.
Θα κάνουν σενάρια σας πολύ πιο ευανάγνωστο, αν χρησιμοποιείτε ένα όριο συμβολοσειρά που αναφέρεται σε αυτό που κάνετε. Αν στέλνετε μια σειρά από εντολές σε έναν απομακρυσμένο υπολογιστή μέσω
Secure Shell
(SSH), μια σειρά όριο που ονομάζεται κάτι σαν «_remote_commands» θα κάνει τέλεια αίσθηση. Δεν χρειάζεται να τα ξεκινήσετε με μια κάτω παύλα «
_
»Χαρακτήρα. Εμείς το κάνουμε αυτό, διότι τα σήματα ως κάτι έξω από τα συνηθισμένα στο σενάριό σας.
Απλά παραδείγματα
Μπορείτε να χρησιμοποιήσετε εδώ τα έγγραφα στη γραμμή εντολών και σενάρια. Όταν πληκτρολογείτε το εξής σε ένα παράθυρο τερματικού, θα δείτε μια «
& Gt?
»Συνέχισης της γραμμής ζητήσει κάθε φορά που θα χτυπήσει“Enter”. Όταν πληκτρολογείτε το «_end_of_text» όριο string και πατήστε «Enter», η λίστα των δικτυακών τόπων έχει περάσει
Γάτα,
και εμφανίζονται στο παράθυρο τερματικού.
γάτα & lt? & Lt? _end_of_text Πώς-να geek Ανασκόπηση GEEK LifeSavvy CloudSavvy IT MindBounce _end_of_text
Αυτό δεν είναι το πιο αξιόλογο από ασκήσεις, αλλά έχει αποδείξει ότι τίποτα δεν έχει αποσταλεί στην εντολή μέχρι το σύνολο του καταλόγου των στοιχείων που συγκέντρωσε και το όριο εγχόρδων αντιμετωπίζεται. ο
Γάτα
η εντολή δεν λαμβάνει καμία εισόδου μέχρι να εισάγετε το όριο string «_end_of_text» και πατήστε το πλήκτρο «Enter».
Μπορούμε να κάνουμε το ίδιο πράγμα σε ένα σενάριο. Πληκτρολογήστε ή αντιγράψτε αυτό το παράδειγμα σε έναν επεξεργαστή κειμένου, αποθηκεύστε το αρχείο ως «heredoc-1.sh», και κοντά στον επεξεργαστή.
#! / Bin / bash γάτα & lt? & lt? "_End_of_text" Το όνομα χρήστη σας είναι: $ (whoami) τρέχοντα κατάλογο εργασίας σας είναι: $ ΑμεΑ έκδοση Bash σας είναι: $ BASH_VERSION _end_of_text
Όπως μπορείτε να ακολουθήσετε αυτό το άρθρο, κάθε φορά που δημιουργείτε ένα σενάριο, θα πρέπει να
να το κάνετε εκτελέσιμο
πριν από αυτό θα τρέξει. Σε κάθε περίπτωση,
Χρησιμοποιήστε το
χλωμός
εντολή
. Αντικαταστήστε το όνομα του σεναρίου σε κάθε παράδειγμα για το όνομα του script που χρησιμοποιείται εδώ.
chmod + x heredoc-1.sh
Αυτό το σενάριο περιλαμβάνει δύο μεταβλητές περιβάλλοντος,
$ ΑμεΑ
και
$ BASH_VERSION
. Τα ονόματα μεταβλητή περιβάλλοντος αντικαθίστανται από τις τιμές-δεδομένων τρέχοντα κατάλογο εργασίας τους και την έκδοση του Bash-όταν εκτελείται το script.
Το σενάριο χρησιμοποιεί επίσης
αντικατάσταση εντολών
επί
ο
ποιός είμαι
εντολή
. Το όνομα της εντολής αντικαθίσταται από τη δική της παραγωγής της. Η έξοδος από ολόκληρο το σενάριο είναι γραμμένο στο παράθυρο τερματικού με την εντολή cat. Τρέχουμε το σενάριο καλώντας το όνομά της:
./ heredoc-1.sh
Εάν τροποποιήσετε το σενάριο και τυλίξτε το όριο κορδόνι στην πρώτη γραμμή του εδώ τεκμηριώνει σε εισαγωγικά»
"
«, Η λίστα δεδομένων διοχετεύεται στο εδώ κείμενο κατά λέξη εντολή. Τα ονόματα των μεταβλητών εμφανίζεται αντί μεταβλητές τιμές, και η υποκατάσταση εντολή δεν θα πραγματοποιηθεί.
#! / Bin / bash γάτα & lt? & lt? - "_end_of_text" Το όνομα χρήστη σας είναι: $ (whoami) τρέχοντα κατάλογο εργασίας σας είναι: $ ΑμεΑ έκδοση Bash σας είναι: $ BASH_VERSION _end_of_text
Χειρισμός χαρακτήρες Tab
Από προεπιλογή, οι χαρακτήρες tab στον κατάλογο των δεδομένων σας θα πρέπει να διατηρηθούν και να γράψει στο παράθυρο τερματικού. Αντιγραφή και κερδίστε αυτό το παράδειγμα ως «heredoc-2.sh.» Κάντε το εκτελέσιμο χρησιμοποιώντας το
χλωμός
εντολή. Επεξεργαστείτε τις δαντελωτές γραμμές για να βεβαιωθείτε ότι έχουν ένα ή δύο χαρακτήρες tab στην αρχή της γραμμής και όχι μια σειρά χώρους.
#! / Bin / bash
γάτα & lt? & lt? _end_of_text
Το όνομα χρήστη σας είναι: $ (whoami)
τρέχοντα κατάλογο εργασίας σας είναι: $ ΑμεΑ
έκδοση Bash σας είναι: $ BASH_VERSION
_end_of_text
./ heredoc-2.sh
Οι καρτέλες γραμμένο στο παράθυρο τερματικού.
Με την προσθήκη μια παύλα «
-
»Στο χειριστή ανακατεύθυνσης, η εδώ έγγραφο θα αγνοήσει πρωταγωνιστές καρτέλα. Αποθήκευσε αυτό το παράδειγμα ως «heredoc-3.sh» και να το εκτελέσιμο.
#! / Bin / bash
γάτα & lt? & lt? - _end_of_text
Το όνομα χρήστη σας είναι: $ (whoami)
τρέχοντα κατάλογο εργασίας σας είναι: $ ΑμεΑ
έκδοση Bash σας είναι: $ BASH_VERSION
_end_of_text
./ heredoc-3.sh
Οι καρτέλες αγνοούνται. Αυτό μπορεί να φαίνεται ασήμαντο, αλλά είναι ένα κομψό τρόπο για να αντιμετωπίσει με κορυφαίους καρτέλες λόγω δαντελωτές τμήματα των σεναρίων.
Οι βρόχους και άλλες λογικές κατασκευάσματα συνήθως εσοχή. Αν σας εδώ έγγραφο περιέχεται σε μια εσοχή τμήμα μιας δέσμης ενεργειών, χρησιμοποιώντας μια παύλα «
-
»Με τους αφαιρεί τελεστή ανακατεύθυνσης μορφοποίηση ζητήματα που προκαλούνται από τους κορυφαίους χαρακτήρες tab.
#! / Bin / bash Εαν αληθεύει; τότε γάτα & lt? & lt? - _limit_string Γραμμή 1 με κορυφαία καρτέλα. Γραμμή 2 με κορυφαίους καρτέλα. Γραμμή 3 με κορυφαίους καρτέλα. _limit_string fi
Ανακατεύθυνση σε ένα αρχείο
Η έξοδος από την εντολή που χρησιμοποιείται με την εδώ έγγραφο μπορεί να μεταφερθείτε σε ένα αρχείο. Χρησιμοποιήστε το "
& Gt?
»(Δημιουργία του αρχείου) ή«
& Gt? & Gt?
»(Δημιουργία του αρχείου, αν δεν υπάρχει, προσάρτησης στο αρχείο αν το κάνει) τελεστές
μετά
το όριο κορδόνι στην πρώτη γραμμή του εδώ εγγράφου.
Αυτό το σενάριο είναι «heredoc-4.sh.» Θα ανακατευθύνει την παραγωγή της σε ένα αρχείο κειμένου που ονομάζεται «session.txt.»
#! / Bin / bash γάτα & lt? & lt? _end_of_text & gt? session.txt Το όνομα χρήστη σας είναι: $ (whoami) τρέχοντα κατάλογο εργασίας σας είναι: $ ΑμεΑ έκδοση Bash σας είναι: $ BASH_VERSION _end_of_text
./ heredoc-4.sh
session.text γάτα
Σωληνώσεις την έξοδο σε άλλη εντολή
Η έξοδος από την εντολή που χρησιμοποιείται σε ένα έγγραφο εδώ μπορούν να οδηγηθούν ως είσοδος σε άλλη εντολή. Χρήση
ο σωλήνας «
|
" χειριστής
μετά
το όριο κορδόνι στην πρώτη γραμμή του εδώ εγγράφου. Εμείς πάμε για να διοχετεύσετε την έξοδο από την εντολή εδώ έγγραφο,
Γάτα
, σε
sed
. Θέλουμε να
αντικαταστήσει όλες τις εμφανίσεις
της επιστολής "Α" με το γράμμα "E".
Ονομάστε αυτό το σενάριο "Heredoc-5.sh."
#! / Bin / bash Cat & lt; & lt; _end_of_text | sed's / a / e / g ' Πως Προς το Γκαβάς _end_of_text
./ Heredoc-5.sh
Το "Gaak" διορθώνεται στο "Geek".
Αποστολή παραμέτρων σε μια λειτουργία
Η εντολή που χρησιμοποιείται με ένα εδώ έγγραφο μπορεί να είναι μια λειτουργία στο σενάριο.
Αυτό το σενάριο περνά μερικά δεδομένα οχήματος σε μια λειτουργία. Η λειτουργία διαβάζει τα δεδομένα σαν να είχε πληκτρολογηθεί από έναν χρήστη. Οι τιμές των μεταβλητών στη συνέχεια εκτυπώνονται. Αποθηκεύστε αυτό το σενάριο ως "heredoc-6.sh".
#! / Bin / bash
# Η λειτουργία SET_CAR_DETALS ()
set_car_details ()
{
διαβάστε το make
Διαβάστε το μοντέλο
Διαβάστε το New_ured
Διαβάστε την παράδοση_Collect
Διαβάστε την τοποθεσία
ανάγνωση τιμής
}
# Το εδώ έγγραφο που περνάει τα δεδομένα σε set_car_details ()
set_car_details & lt; & lt; _mars_rover_data
Νάσα
Επιμονή rover
Μεταχειρισμένος
Συλλέγω
Άρης (Long, Lat) 77.451865.18.445161
2,2 δισεκατομμύρια
_mars_rover_data
# Ανάκτηση των στοιχείων του οχήματος
Echo "κάνει: $ make"
ECHO "Μοντέλο: $ μοντέλο"
echo "Νέα ή Μεταχειρισμένα: $ new_used"
echo "παράδοση ή συλλογή: $ delivery_collect"
ECHO "Τοποθεσία: $ Τοποθεσία"
ECHO "Τιμή \ $: $ Τιμή"
./ Heredoc-6.sh
Τα στοιχεία του οχήματος γράφονται στο παράθυρο τερματικού.
Δημιουργία και στέλνοντας ένα μήνυμα ηλεκτρονικού ταχυδρομείου
Μπορούμε να χρησιμοποιήσουμε ένα εδώ έγγραφο για να συνθέσουμε και να στείλουμε ένα μήνυμα ηλεκτρονικού ταχυδρομείου. Σημειώστε ότι μπορούμε να περάσουμε παραμέτρους στην εντολή μπροστά από τον χειριστή ανακατεύθυνσης. Είμαστε
χρησιμοποιώντας το Linux
ταχυδρομείο
εντολή
προς το
Στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου μέσω του τοπικού συστήματος αλληλογραφίας
στο λογαριασμό χρήστη που ονομάζεται "Dave". ο
-μικρό
(Θέμα) Η επιλογή μας επιτρέπει να καθορίσουμε το θέμα για το μήνυμα ηλεκτρονικού ταχυδρομείου.
Αυτό το παράδειγμα αποτελεί σενάριο "heredoc-7.sh".
#! / Bin / bash Άρθρο = "εδώ έγγραφα" Mail-stating worklow status 'dave & lt; & lt; _Project_report Όνομα χρήστη: $ (WHOAMI) Έχει ολοκληρώσει την ανάθεση: Άρθρο: $ Άρθρο _Project_report
./ Heredoc-7.sh
Δεν υπάρχει ορατή έξοδος από αυτό το σενάριο. Αλλά όταν ελέγξουμε το ταχυδρομείο μας, βλέπουμε ότι το ηλεκτρονικό ταχυδρομείο αποτελείται, αποστέλλονται και παραδόθηκαν.
Χρησιμοποιώντας εδώ έγγραφα με SSH
Εδώ τα έγγραφα είναι ένας ισχυρός και βολικός τρόπος για να εκτελέσετε ορισμένες εντολές σε έναν απομακρυσμένο υπολογιστή μόλις δημιουργηθεί μια σύνδεση SSH. Εάν έχετε ρυθμίσει τα κλειδιά SSH μεταξύ των δύο υπολογιστών, η διαδικασία σύνδεσης θα είναι πλήρως αυτόματη. Σε αυτό το γρήγορο και βρώμικο παράδειγμα, θα σας ζητηθεί ο κωδικός πρόσβασης για τον λογαριασμό χρήστη στον απομακρυσμένο υπολογιστή.
Αυτό το σενάριο είναι "heredoc-8.sh". Θα συνδεθούμε με έναν απομακρυσμένο υπολογιστή που ονομάζεται "Remote-PC". Ο λογαριασμός χρήστη ονομάζεται "Dave". Χρησιμοποιούμε το
-T
(Απενεργοποιήστε την επιλογή ψευδο-τερματικής κατανομής) επειδή δεν χρειαζόμαστε ένα διαδραστικό ψευδο-τερματικό που θα μας δοθεί.
Στο "Κάνε κάποια εργασία εδώ" του σεναρίου, θα μπορούσαμε να περάσουμε μια λίστα εντολών και αυτές θα εκτελεστούν στον απομακρυσμένο υπολογιστή. Φυσικά, θα μπορούσατε απλά να καλέσετε ένα σενάριο που ήταν στον απομακρυσμένο υπολογιστή. Το απομακρυσμένο σενάριο θα μπορούσε να κρατήσει όλες τις εντολές και τις ρουτίνες που θέλετε να εκτελέσετε.
Όλα αυτά που πρόκειται να κάνετε script-heredoc-8.sh-είναι να ενημερώσετε ένα αρχείο σύνδεσης στον απομακρυσμένο υπολογιστή. Ο λογαριασμός χρήστη και μια σφραγίδα χρόνου και ημερομηνίας καταγράφονται σε ένα αρχείο κειμένου.
#! / Bin / bash ssh -t [email protected] & lt; & lt; _remote_commands # Κάνετε κάποια δουλειά εδώ # Ενημέρωση σύνδεσης σύνδεσης echo $ user "-" $ (ημερομηνία) & gt; & gt; /home/dave/conn_log/script.log _remote_commands
Όταν τρέχουμε την εντολή, μας ζητούμε τον κωδικό πρόσβασης για το λογαριασμό στο μακρινός υπολογιστή.
./ Heredoc-8.sh
Ορισμένες πληροφορίες σχετικά με τον απομακρυσμένο υπολογιστή εμφανίζονται και επιστρέφουμε στη γραμμή εντολών.
Στο
μακρινός
Υπολογιστής, μπορούμε να χρησιμοποιήσουμε
Γάτα
Για να ελέγξετε το αρχείο καταγραφής σύνδεσης:
Cat conn_log / script.log
Κάθε σύνδεση παρατίθεται για εμάς.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να δημιουργήσετε και να εγκαταστήσετε τα κλειδιά SSH από το κέλυφος του Linux
Παράξενο όνομα, τακτοποιημένα χαρακτηριστικά
Εδώ τα έγγραφα είναι ιδιόμορφα αλλά ισχυρά, ειδικά όταν χρησιμοποιούνται για να στείλουν εντολές σε έναν απομακρυσμένο υπολογιστή. Θα ήταν ένα απλό θέμα για να σεναισθητοποιήσει μια δημιουργία αντιγράφων ασφαλείας χρησιμοποιώντας
rsync
. Το σενάριο θα μπορούσε στη συνέχεια να συνδεθεί στον απομακρυσμένο υπολογιστή, ελέγξτε τον υπόλοιπο χώρο αποθήκευσης και στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου ειδοποίησης εάν ο χώρος ήταν χαμηλός.
ΣΧΕΤΙΖΕΤΑΙ ΜΕ: Πώς να δημιουργήσετε αντίγραφα ασφαλείας του συστήματος Linux με το RSYNC