User Tools

Site Tools


linux-admin:capitole:capitol-09

9. Shell scripting și automatizare

Pentru funcționalități de automatizare folosim shell scripting. Un script shell este o înlănțiure de comenzi agregate pentru un scop final. Un shell script este o formă quick'n'dirty de automatizare. Pentru aspecte mai complexe, este util să se folosească forme avansate de automatizare precum Awk, Python, Perl sau altele.

Subiecte abordate

  • Ce este un script shell?
  • Comenzi pentru controlul fluxului
  • Utilitare de lucru cu expresii regulate

Best practices

  • Comenzi neinteractive în shell
  • Shell scripting este quick'n'dirty
  • for vs. argumente în listă vs. while read
  • if <command>
  • tr, cut
  • Shebang !# la începutul unui fișier

Utilitare folosite

  • if, test, while read

Exerciții

Demo-uri

Folosire if test

Un script care verifică faptul că primește un argument. Verifică dacă argumentul primit este un nume existent de utilizator. Dacă nu, iese din script. Altfel, schimbă parola utilizatorului cu o parolă generată cu ajutorul comenzii pwgen.

Folosire while read și test

Un script care afișează utilizatorii care au user id-ul mai mare sau egal decât 500.

Un script care afișează utilizatorii care au user id-ul între 100 și 500, adică mai mare decât 100 și mai mic decât 500.

Extragere informații dintr-un fișier CSV

Pornind de la catalogul din fișierul register.csv din arhiva capitolului, creați scriptul select_7.sh care să afișeze numele și grupa celor care au nota mai mare sau egală cu 7.

Puteți urma pașii ajutători de mai jos.

Fișierul să primească la standard input fișierul register.csv. Adică să ruleze în forma

./select_7.sh < register.csv.

Creați scriptul select_7.sh și folosiți comanda

read line

pentru a citi prima linie din fișier (antetul).

Actualizați în cadrul scriptului variabila IFS pentru ca read să folosească pe post de separator caracterul virgulă (,).

Citiți coloanele folosind while și read (ne interesează numele și grupa studenților).

Folosiți if și test pentru a selecta studenții care au nota mai mare sau egală cu 7.

Calcul medie

Calculați media notelor de mai sus într-un script compute_average.sh. Puteți folosi fie shell scripting (while, read, expandarea aritmetică) și comanda bc.

Parsare fișiere de log

Parsați fișierul bttrack.log din arhiva capitolului.

Este un fișier jurnal (log) al unui tracker BitTorrent.

Creați un script denumit parse-tracker-log.sh care parsează intrarea standard și afișează la ieșirea standard 3 coloane: cantitatea de date descărcate de un peer, adresa IP a peer-ului și numele clientului.

Parcurgeți DOAR liniile care conțin /GET /announce.

linux-admin/capitole/capitol-09.txt · Last modified: 2016/10/10 09:12 by mihaic