Κοινή χρήση τεχνολογίας

Αυτοματοποιημένη αλληλεπίδραση Shell Expect (παράδειγμα)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Η Shell Expect αυτοματοποιημένη αλληλεπίδραση

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

Σύνταξη κλειδιού

❶[#!/usr/bin/expect]

Αυτή η γραμμή λέει στο λειτουργικό σύστημα ποιο κέλυφος να χρησιμοποιήσει για την εκτέλεση του κώδικα στο σενάριο. Αναμένετε ότι εδώ είναι στην πραγματικότητα το ίδιο πράγμα με το bash στο Linux και το cmd στα Windows. ΣΗΜΕΙΩΣΗ: Αυτή η γραμμή πρέπει να είναι η πρώτη γραμμή στο σενάριο.

❷ σετ

Το προεπιλεγμένο χρονικό όριο λήξης είναι 10 δευτερόλεπτα Το χρονικό όριο λήξης της περιόδου λειτουργίας μπορεί να ρυθμιστεί μέσω της εντολής set.

Για παράδειγμα: ορίστε το χρονικό όριο λήξης 300 //Δηλώνει ότι το χρονικό όριο λήξης περιόδου λειτουργίας είναι 300 δευτερόλεπτα

Για παράδειγμα: ορισμός χρονικού ορίου -1/ρύθμιση/ποτέ λήξη χρονικού ορίου, κοινές ρυθμίσεις

Σημείωση: Γιατί πρέπει να ορίσετε ένα χρονικό όριο, επειδή ο προεπιλεγμένος χρόνος είναι 10 δευτερόλεπτα, είναι πιθανό να αποσυνδεθεί κατά τη διαδραστική εκτέλεση, προκαλώντας τον τερματισμό της εκτέλεσης της εργασίας πριν από την ολοκλήρωση; Μια προγραμματισμένη εργασία της εταιρείας μας που συγχρονίζει αρχεία από απομακρυσμένο ftp τερματίζεται πάντα αργότερα, έβαλα το χρονικό όριο στο -1 και ήταν μια χαρά.

❸ ωοτοκία

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

❹ αναμένετε

Μόνο τα αποτελέσματα εκτέλεσης των εντολών που εκτελούνται από το spawn καταγράφονται από το expect, το οποίο περιλαμβάνει κυρίως τυπικές πληροφορίες γραμμής εισόδου, eof και timeout. Περιμένετε να εμφανιστεί η γραμμή εντολών, η οποία είναι η γραμμή εντολών για να καταγράψετε την είσοδο του χρήστη:

➎ αποστολή

Η αποστολή τιμών που απαιτούν αλληλεπίδραση αντικαθιστά τη χειροκίνητη εισαγωγή του χρήστη, αυτή η εντολή δεν μπορεί να εισαγάγει αυτόματα ή να τροφοδοτήσει γραμμή και γενικά απαιτεί την προσθήκη r (επιστροφή μεταφοράς) ή n

περιμένω "password"{ send "abc123r"} //Το τμήμα αποστολής της ίδιας γραμμής πρέπει να έχει {}

❻Εξολοθρευτής αναμένεται eof/αλληλεπίδραση

προσδοκώ εοφ

Αυτό πρέπει να προστεθεί

αλληλεπιδρώ

Μετά την ολοκλήρωση της εκτέλεσης, διατηρήστε τη διαδραστική κατάσταση και μεταφέρετε τον έλεγχο στην κονσόλα Αυτή τη στιγμή, μπορεί να πραγματοποιηθεί χειροκίνητη λειτουργία. Εάν δεν υπάρχει τέτοια πρόταση, θα βγει μετά την ολοκλήρωση της σύνδεσης, αντί να παραμείνει στο απομακρυσμένο τερματικό.

ΥΓ: Το σενάριο αναμονής πρέπει να τελειώνει με την αλληλεπίδραση ή την αναμονή eof είναι συνήθως αρκετή για την εκτέλεση αυτοματοποιημένων εργασιών.

Παράδειγμα

Εισαγάγετε την εντολή expect στο σενάριο του κελύφους, η μορφή είναι η εξής

Παράδειγμα 1: 22.sh δημιουργία σεναρίου φακέλου

#!/bin/sh

αναμένω

spawn ssh 10.1.1.196

αναμένω κωδικό πρόσβασης {send xxxn}

αποστολή cd /home/cg/hmf_app/testr

αποστολή mkdir newworkr

αποστολή εξόδου

προσδοκώ εοφ

ΕΟΦ

Παράδειγμα 2: Δημιουργία σεναρίου κελύφους φακέλου

αναμένω

spawn ssh 10.1.1.196

αναμένω κωδικό πρόσβασης {send xxxn}

αποστολή cd /home/cg/hmf_app/testr

αποστολή mkdir newworkr

αποστολή εξόδου

προσδοκώ εοφ

ΕΟΦ

Παράδειγμα 3: Αντιγραφή αρχείων

αναμένω

ορίστε timeout -1

spawn scp [email protected]:/data/package/casb/$casbzip ./

αναμένω κωδικό πρόσβασης {send xxxn}

προσδοκώ εοφ

ΕΟΦ

Παρατήρηση:

ΕΟΦ

...

ΕΟΦ

Αντιπροσωπεύει ένα σενάριο φλοιού

αναφέρομαι σε:Shell Expect automated interaction_shell script διαδραστική αυτόματη εισαγωγή περιεχομένου-CSDN Blog