Close Menu
Stiri IT

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Android 16 primește o funcție majoră de accesibilitate auditivă

    13 martie 2025

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 2025

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 2025

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Android 16 primește o funcție majoră de accesibilitate auditivă

    13 martie 2025

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 2025

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 2025
    Facebook X (Twitter) Instagram
    Trending
    • Android 16 primește o funcție majoră de accesibilitate auditivă
    • E-commerce Wojas: Cum să cumperi confortabil pantofi online?
    • Cum Devine România un Hub pentru IT Outsourcing
    • Noul agent Operator AI al OpenAI poate face lucruri pe web pentru tine
    • Acum ChromeOS se poate reseta de la sine fără a șterge laptopul
    • Sugestii pentru scrierea prompturilor pentru AI? Întreabă TRACI
    • Ce sarcini interne poți eficientiza cu o soluție dedicată de HR
    • Descoperă sistemul inteligent de filtrare al Inter Imobiliare: Găsești apartamentul perfect în câteva clickuri!
    Facebook Instagram X (Twitter) YouTube WhatsApp RSS
    Stiri IT
    • Stiri
    • Tech
    • Reviews
    • Auto
    • Stiinta
    • Divertisment
    • Cum Sa
    • More
      • Ghiduri
      • Iluzii optice
      • Info utile
      • Invenții și Descoperiri
      • Camere web live
      • Test viteza internet
      • Comunicate de presă
      • Oferte
      • Vremea
      • Curs valutar BNR
    Subscribe
    Stiri IT
    Prima pagină » Automatizați intrările în scripturile Linux cu comanda expectativă – CloudSavvy IT
    Cum sa

    Automatizați intrările în scripturile Linux cu comanda expectativă – CloudSavvy IT

    Tripon AlinBy Tripon Alin15 iunie 2021009 Mins Read
    Share Facebook Twitter Pinterest Copy Link LinkedIn Tumblr Email Telegram WhatsApp
    Follow Us
    Google News Flipboard
    1623739332 Automatizati intrarile in scripturile Linux cu comanda expectativa CloudSavvy
    1623739332 Automatizati intrarile in scripturile Linux cu comanda expectativa CloudSavvy
    Share
    Facebook Twitter LinkedIn Pinterest Email Copy Link

    Bash Shell

    Comanda Linux expect vă permite să automatizați interacțiunile cu scripturi și programe. Puteți trimite orice fel de răspuns la script atunci când acesta așteaptă o introducere de text.

    Automatizarea înseamnă eficiență

    Când administrați un computer Linux sau un grup de computere, vă veți confrunta cu multe sarcini repetitive. Răspunsul evident este să scrieți un script pentru a efectua cea mai mare parte a lucrării pentru dvs. Shell-ul Bash, ca toate shell-urile moderne, oferă un limbaj de scriptare bogat și flexibil.

    Scrierea unui job lung sau plictisitor vă oferă flexibilitatea de a executa acea sarcină atunci când biroul este închis sau în cele mai liniștite perioade ale unei operațiuni 24/7. Scripturile vă oferă, de asemenea, repetabilitate. Nu vor uita să efectueze un pas, indiferent de câte ori li se cere să efectueze aceleași treburi plictisitoare.

    Este în regulă, în măsura în care merge. Dar dacă scriptul dvs. necesită interacțiunea cu utilizatorul sau dacă apelează un program care va avea nevoie de contribuții umane, ce puteți face? Nu doriți să fiți prezenți când rulează scriptul sau, dacă sunteți prezent, să urmăriți fereastra terminalului gata să sară și să apăsați câteva taste.

    Linux are yes comanda, care trimite un flux de caractere „y” sau orice alt șir specificat de utilizator către fereastra terminalului. Dacă un program așteaptă un răspuns la o întrebare da sau nu, va fi alimentat forțat cu unul dintre caracterele „y”. O va accepta ca intrare și va putea continua. Trebuie să țineți ieșirea din yes în scenariu.

    yes | script.sh

    Este posibil să nu doriți să trimiteți un răspuns afirmativ. Poate că trebuie să spui „nu”. Puteți face asta și folosind yes comanda. Puteți trimite orice expresie doriți, nu sunteți limitat la răspunsuri precum „y”, „Y”, „Da”, „n”, „N” sau „Nu”.

    Poate că trebuie să trimiteți un „r” pentru reinstalare la un „install/upgrade/reinstall [i/u/r] ”Prompt.

    yes r

    yes comanda nu poate face față dacă trebuie să ofere mai mult de un tip de răspuns. Pentru această situație, trebuie să folosim expect .

    LEGATE DE: Cum se folosește comanda yes pe Linux

    Instalarea comenzii expect

    Am testat expect pe Ubuntu, Fedora și Manjaro. Pachetul nu a fost inclus în aceste distribuții, așa că a trebuit să fie instalat. Pe tipul Ubuntu:

    sudo apt install expect

    În Fedora, comanda de care aveți nevoie este:

    sudo dnf install expect

    Pe Manjaro îl folosim pacman:

    sudo pacman -Sy expect

    Cum te aștepți la Works

    expect comanda vă permite să gestionați cele două capete ale conversației dintre setul de răspunsuri pregătite și programul sau scriptul către care le veți trimite. Faceți acest lucru creând un script „expect” care urmărește solicitările din scriptul principal și trimite răspunsul corespunzător pentru fiecare.

    Citeste si  Cum se lansează automat Cron în WSL pe Windows 10 și 11

    Să presupunem că aveți un script de rezervă care solicită un nume de director sursă și un nume de director țintă. Apoi face o copie a fișierelor din directorul sursă din directorul țintă. Fără biții care fac copierea fișierului, scriptul dvs. ar putea arăta cam așa:

    #!/bin/bash
    
    echo "Directory to backup?"
    read source_directory
    
    echo "Backup location?"
    read target_directory
    
    echo
    echo "Target directory:" $target_directory

    Tot ce face acest script este să solicite căile către cele două directoare. Acesta imprimă directorul țintă în fereastra terminalului, astfel încât să putem vedea că a primit un răspuns de la expect și că ar putea să-l citească corect.

    Pentru a furniza cealaltă jumătate a conversației, creăm un „script de așteptare”. Prin convenție, acestea au o extensie „.exp”. Acest exemplu va funcționa cu scriptul nostru „backup.sh”.

    #!/usr/bin/expect -f
    
    set timeout -1
    
    spawn ./backup.sh
    
    expect "Directory to backup?r"
    send -- "/home/dave/Documents/r"
    
    expect "Backup location?r"
    send -- "/media/dave/external/backupr"
    
    expect eof

    Aceasta afișează principalele trei comenzi din scripturile de așteptare, spawn, expect, și send comenzi.

    Primul lucru pe care trebuie să-l observăm este că se referă la shebang expect, nu bash. -f (fișier) pavilion spune expect răspunsurile provin dintr-un fișier.

    Dezactivăm efectiv expirările, setându-le la infinit cu -1.

    spawn comanda lansează scriptul de rezervă.

    Știm cele două întrebări pe care ni le va pune scriptul „backup.sh”. Pentru fiecare întrebare creăm o linie „expect”. Acestea conțin mesajul text care va fi trimis către fereastra terminalului de către scriptul „backup.sh”. Aceasta este ceea ce expect programul va fi atent. Cand expect vede promptul, textul în send linia este returnată la scriptul „backup.sh”.

    expect eof lines spune expect să așteptați finalul final al fișierului la finalizarea procesării în scriptul automat.

    Faceți ambele scripturi executabile:

    chmod +x backup.sh
    chmod +x backup.exp

    Și utilizați scriptul „backup.exp” pentru a declanșa întregul proces.

    ./backup.exp

    Puteți vedea cele două solicitări din „backup.sh” și răspunsurile din „backup.exp”.

    Asta va deveni foarte rapid

    Este minunat să vedem două scripturi interacționând astfel, răspunsurile automate fiind trimise de scriptul nostru expect și acceptate ca inputuri autentice de către scriptul automat. Acesta este doar un exemplu simplu, desigur. Dacă încercați să automatizați un proces de lungă durată – și acestea sunt cele pe care doriți să le automatizați – vă veți găsi în curând împotmolit.

    Textul din expect liniile trebuie să se potrivească exact cu solicitările din scriptul pe care îl automatizați. Ortografiile greșite și formularea incorectă vor face ca omisiunea să fie omisă, iar procesul automat să se blocheze. Dacă încă mai dezvoltați sau modificați scriptul pe care încercați să îl automatizați, este posibil ca formularea solicitărilor și ordinea acestora în script să se schimbe. Actualizările la scripturi sau programe se pot modifica, elimina sau introduce solicitări. Urmărirea modificărilor și reproducerea acestora în scriptul dvs. așteptat devine obositoare și predispuse la erori.

    Citeste si  Cum să activați modul întunecat al Snapchat pe iPhone

    Cel mai convenabil mod de a crea un script expect este de a utiliza autoexpect. Aceasta este instalată împreună cu expect. Putem spune autoexpect pentru a monitoriza interacțiunea noastră reală cu un script sau program și pentru a genera un fișier de așteptare pentru noi.

    S-ar putea să aibă ceva de făcut în fișierul de așteptare generat, dar este mult mai rapid decât să scrii unul cu mâna. De exemplu, dacă tastați ceva greșit în sesiunea dvs. atunci când autoexpect vă monitorizează, apăsările incorecte ale tastelor și editarea și backspacing-ul pentru a le corecta vor fi capturate. Pentru a ordona acest lucru, pur și simplu ștergeți acea secțiune și tastați textul corect.

    Folosind autoexpect

    Folosind autoexpect este usor. Noi folosim -f (denumire fișier) pentru a-i spune numele fișierului expect pe care ar trebui să îl creeze și programul sau scriptul pe care dorim să-l ruleze. Solicitările procesului și răspunsurile noastre sunt înregistrate și trimise în fișierul expect. Ca o atingere frumoasă, autoexpect face ca fișierul așteptabil să fie executabil pentru noi.

    Să presupunem că folosim frecvent rsync pentru a trimite fișiere de pe un computer către un director de pe alt computer prin rețea. Vom folosi autoexpect pentru a crea un fișier de așteptare al procesului respectiv.

    Linia noastră de comandă arată astfel. Prima comandă este autoexpect urmat de -f pavilion și numele fișierului expect pe care dorim să îl creăm. În acest caz, este „send-pics.exp”.

    Restul comenzii este regulat rsync comanda. pentru că rsync folosește SSH protocol pentru a ne conecta de la distanță la computerul țintă, va trebui să furnizăm parola pentru contul de utilizator „dave” pe computerul țintă.

    autoexpect -f send-pics.exp rsync -rasv ~/Pictures/raw/ dave@nostromo.local:/home/dave/raw/

    Când executăm acea comandă rsync este lansat și ni se solicită parola pentru contul utilizatorului Dave de pe computerul la distanță. Odată introdus, unele fișiere sunt trimise la computerul de la distanță, rsync întrerupe conexiunea și procesul se încheie.

    Ni se spune că fișierul „send-pics.exp” a fost creat. Hai să aruncăm o privire:

    ls -l send-pics.exp

    A fost într-adevăr creat și este executabil. Îl putem rula apelând după nume:

    ./send-pics.exp

    De data aceasta procesul rulează fără nicio interacțiune umană. Orice fișiere noi de la ultimul transfer sunt trimise la aparatul de la distanță.

    Acesta este un exemplu de script foarte mic. Nu economisește niciun efort în comparație cu rularea rsync comandă de mână. Deși este adevărat, acesta ilustrează punctul în care puteți controla programe, precum și scripturi și puteți aplica principiile văzute aici scripturilor sau proceselor de orice lungime.

    Citeste si  Pentru ce a fost utilizată servieta Windows, oricum?

    LEGATE DE: Cum să faceți o copie de rezervă a sistemului dvs. Linux

    Stai, Parola mea!

    Trebuie să fiți conștient de faptul că orice parolă – sau orice altă informație sensibilă – adunată în timpul unui autoexpect sesiunea este stocată în text simplu în scriptul generat expect. Parolele nu trebuie scrise niciodată în text simplu nicăieri. Pentru conexiunile SSH, o soluție mai bună este să utilizați chei SSH și să aveți o schemă de autentificare fără parolă.

    Evident, acest lucru nu va ajuta dacă nu utilizați SSH.

    Parola stocată în text simplu în scriptul expect, în editorul gedit

    Puteți edita scriptul dvs. de așteptare și puteți schimba linia care se ocupă de parola dvs. în:

    interact ++ return

    Comandă interactivă în scriptul expect, în editorul gedit

    Când scriptul ajunge la această linie, vă va aștepta introducerea, permițându-vă să introduceți parola. Controlul revine apoi la scriptul de așteptare după ce ați furnizat parola.

    ./send-pics.exp

    Dar asta prezintă o altă problemă. Înseamnă că scriptul dvs. nu mai poate rula nesupravegheat. Dacă veți lansa întotdeauna manual scriptul, probabil că nu contează, mai ales dacă solicitarea parolei are loc chiar la începutul scriptului. Puteți lansa scriptul, introduceți parola și apoi lăsați-l să se îngrijească.

    O altă modalitate de abordare a problemei este:

    • Modificați permisiunile de fișiere pentru scriptul dvs. de așteptare folosind chown la 740, -rwxr-x---.
    • Utilizare chmod pentru a schimba proprietarul grupului scriptului expect într-un grup de încredere.
    • Creați un script obișnuit care lansează scriptul dvs. de așteptare. Setați acest fișier să fie deținut și de grupul de încredere. Setați permisiunile pentru aceasta la 2751, -rwxr-s--x.
    • Aceasta creează un script de lansare pe care oricine îl poate citi și executa, care se află în același grup de încredere ca și scriptul de așteptare și cu setgid bit set. Indiferent de cine rulează acest script, grupul său eficient va fi grupul de încredere și nu grupul persoanei care execută scriptul. Deci, acest script va putea lansa întotdeauna scriptul expect.
    • Între timp, scriptul de așteptare care conține parola este inaccesibil oricui în afară de dvs.

    LEGATE DE: Cum se utilizează SUID, SGID și Sticky Bits pe Linux

    Vă puteți aștepta la lucruri grozave

    Sunt destule aici ca să te duci, dar mai sunt multe expect decât zonele pe care le-am acoperit. expect pagina man are peste 1700 de linii!

    Pentru activități precum instalări automate, backupuri programate sau implementări repetitive, expect vă va transforma fluxul de lucru.

    Follow on Google News Follow on Flipboard
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Copy Link
    Tripon Alin
    • Website

    Alin Tripon Fondator NewIT.ro, pasionat de tehnologie, maşini, divertisment, ştiinţa şi jocuri video, am creat acest portal de ştiri it, tutoriale, ghiduri şi alte informații utile. Pasionat de lumea digitală și cultura tech, în timpul liber îmi îmbogățesc cunoștințele ce țin de marketing digital, în special SEO.

    Related Posts

    Cum să aruncați o saltea veche în mod responsabil

    23 iulie 2024

    Cum poti impacheta mai eficient lucrurile in trolere?

    31 ianuarie 2024

    Cum să salvați pagini PDF ca imagini JPG în Windows și macOS

    19 iulie 2023
    Add A Comment
    Leave A Reply Cancel Reply

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Top Posts

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 202518 Views

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 20254 Views

    Cum se recuperează notificările șterse de pe iPhone

    8 octombrie 20223 Views
    Latest Reviews
    8.5

    Pico 4 Review: Should You Actually Buy One Instead Of Quest 2?

    Tripon Alin15 ianuarie 2021
    8.5

    Pico 4 Review: Should You Actually Buy One Instead Of Quest 2?

    Tripon Alin15 ianuarie 2021
    8.1

    A Review of the Venus Optics Argus 18mm f/0.95 MFT APO Lens

    Tripon Alin15 ianuarie 2021
    Stay In Touch
    • Facebook
    • YouTube
    • TikTok
    • WhatsApp
    • Twitter
    • Instagram

    Subscribe to Updates

    Get the latest tech news from FooBar about tech, design and biz.

    Demo
    Top Posts

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 202518 Views

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 20254 Views

    Cum se recuperează notificările șterse de pe iPhone

    8 octombrie 20223 Views
    Latest Reviews
    8.5

    Pico 4 Review: Should You Actually Buy One Instead Of Quest 2?

    Tripon Alin15 ianuarie 2021
    8.5

    Pico 4 Review: Should You Actually Buy One Instead Of Quest 2?

    Tripon Alin15 ianuarie 2021
    8.1

    A Review of the Venus Optics Argus 18mm f/0.95 MFT APO Lens

    Tripon Alin15 ianuarie 2021
    Stay In Touch
    • Facebook
    • YouTube
    • TikTok
    • WhatsApp
    • Twitter
    • Instagram

    Subscribe to Updates

    Get the latest tech news from FooBar about tech, design and biz.

    Demo
    Most Popular

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 202518 Views

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 20254 Views

    Cum se recuperează notificările șterse de pe iPhone

    8 octombrie 20223 Views
    Our Picks

    Android 16 primește o funcție majoră de accesibilitate auditivă

    13 martie 2025

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 2025

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 2025

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    New Comments
    • Catalin Scurtu la Cum să obțineți o rambursare de la PayPal
    • eBogdan la Cum Devine România un Hub pentru IT Outsourcing
    • eBogdan la Noul agent Operator AI al OpenAI poate face lucruri pe web pentru tine
    • eBogdan la Rezolvarea problemelor cu lumina roșie LOS de pe router
    Most Popular

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 202518 Views

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 20254 Views

    Cum se recuperează notificările șterse de pe iPhone

    8 octombrie 20223 Views
    Our Picks

    Android 16 primește o funcție majoră de accesibilitate auditivă

    13 martie 2025

    E-commerce Wojas: Cum să cumperi confortabil pantofi online?

    13 martie 2025

    Cum Devine România un Hub pentru IT Outsourcing

    23 ianuarie 2025

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    Facebook X (Twitter) Instagram Pinterest
    • Home
    • Technology
    • Gaming
    • Phones
    • Buy Now
    © 2025 ThemeSphere. Designed by ThemeSphere.

    Type above and press Enter to search. Press Esc to cancel.