User Tools

Site Tools


linux-admin:capitole:capitol-09

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
linux-admin:capitole:capitol-09 [2016/06/06 18:24]
127.0.0.1 external edit
linux-admin:capitole:capitol-09 [2016/10/10 09:12] (current)
mihaic [Best practices]
Line 1: Line 1:
 ====== 9. Shell scripting și automatizare ====== ====== 9. Shell scripting și automatizare ======
  
-TODO+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 ===== ===== Subiecte abordate =====
  
-  * TODO +  * Ce este un script shell? 
-  * TODO +  * Comenzi pentru controlul fluxului 
-  * TODO+  * 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 ==== ==== Utilitare folosite ====
  
-  * TODO +  * ''​if'',​ ''​test'',​ ''​while read''​
-  * TODO +
-  * TODO+
  
-==== Bune practici ​====+===== Exerciții =====
  
-  * TODO +==== Demo-uri ====
-  * TODO +
-  * TODO+
  
-===== Resurse utile =====+=== Folosire if test ===
  
-  ​TODO +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''​.
-  ​TODO+
  
-==== Slide-uri ====+=== Folosire while read și test ===
  
-[[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​slides/​cap-09.pdf|Slide-uri capitol 9]]+Un script care afișează utilizatorii care au user id-ul mai mare sau egal decât ''​500''​.
  
-<​html>​ +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''​.
-  <​center>​ +
-    <iframe src="​http://​docs.google.com/​viewer?​url=http://​koala.cs.pub.ro/​training/​res/​linux-admin/​slides/​cap-09.pdf&​embedded=true"​ width="​600"​ height="​470" ​  ​style="​border:​ none;"></​iframe>​ +
-  </​center>​ +
-</​html>​+
  
-===== Exerciții =====+==== Extragere informații dintr-un fișier CSV ====
  
-==== Demo-uri ====+Pornind de la catalogul din fișierul ''​register.csv''​ din [[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​arc/​cap-08-res.zip|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<​code>​ 
 +./​select_7.sh < register.csv. 
 +</​code>​ 
 + 
 +Creați scriptul ''​select_7.sh''​ și folosiți comanda<​code>​ 
 +read line 
 +</​code>​ 
 +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''​.
  
-TODO+==== Calcul medie ====
  
-TODO+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''​.
  
-==== TODO: Exercițiu 1 ====+==== Parsare fișiere de log ====
  
-TODO+Parsați fișierul ''​bttrack.log''​ din [[http://​koala.cs.pub.ro/​training/​res/​medium-unix/​arc/​cap-08-res.zip|arhiva capitolului]].
  
-==== TODO: Exercițiu 2 ====+Este un fișier jurnal (//log//) al unui tracker BitTorrent.
  
-TODO+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.
  
 +<note tip>
 +Parcurgeți **DOAR** liniile care conțin ''/​GET /​announce''​.
 +</​note>​
linux-admin/capitole/capitol-09.1465226641.txt.gz · Last modified: 2016/10/03 18:37 (external edit)