Cursul 10 - Shell scripting

Documente similare
Cursul 10 - Shell scripting

Inserarea culorilor in tabele

Microsoft Word - cap2.2.UNIX-NOS.doc

Aggregating Data

Cursul 6 - Interfata în linia de comanda

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 3. Achizitionarea domeniilor web si a

Managementul Resurselor Umane

PHP (II)

Microsoft PowerPoint - 11_USO_curs_08.ppt [Compatibility Mode]

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Ruby on Rails Pop Alexandru Pavel Razvan Calculatoare 4

Web Social FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 2. Dezvoltarea blogurilor prin intermediul WordPress.com PREZE

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIŞA DISCIPLINEI (CO

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

tehnologii web

Slide 1

Manual de utilizare a Sistemului Informațional al Institutului Național al Justiției (SI INJ) intranet.inj.md Ver.2 Manual de utilizare a Sistemului I

proiectarea bazelor de date

Paradigme de Programare

Limbaje de Programare Curs 6 – Functii de intrare-iesire

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Dunărea de Jos Galați 1.2 Facultatea Economie și Administr

Lucrarea nr. 2 Aplicaţii de tip client Mihai IVANOVICI 6 martie 2006 Scopul acestei lucrări este de a vă familiariza cu modulul Python socket şi cu mo

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Curs 10 - Automatizarea scalabila a sistemelor

Laborator02

Declararea variabilelor

Informație și comunicare

Laborator 5 - Paradigme de Programare

Packet Tracer - Configurarea ACL-urilor extinse - Scenariul 1 Topologie Tabela de Adresare R1 Echipament Interfață Adresă IP Masca de subreţea Default

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Cursul 7 - Servicii de retea

Laborator5- ASR

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Laboratory for Computer Security Education 1 Vulnerabilitatea datorată concurenței Copyright Wenliang Du, Syracuse University. The developme

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

Analiză de flux de date 29 octombrie 2012

PowerPoint Presentation

Procesarea documentelor XML in Linux

Slide 1

Termeni de utilizare specifici produselor

COMISIA EUROPEANĂ DIRECȚIA GENERALĂ INFORMATICĂ Componenta de aplicare a politicii WiFi4EU Ghid de implementare v1.0 Cuprins 1. Introducere Br

Baze de date-Anul 2 (semestrul 2)

Analiză statică Analiza fluxului de date 23 octombrie 2014

Laborator5_SQL_an2

Utilizare Internet

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ Universitatea Babeş-Bolyai Cluj-Napoca superior 1.2 Facultatea Matematică şi Info

Utilizarea îmbinării corespondenței pentru crearea şi imprimarea scrisorilor şi a altor documente Dacă utilizați îmbinarea corespondenței când doriți

Microsoft PowerPoint - 11_USO_curs_00 [Compatibility Mode]

2

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Microsoft Word - Curs_07.doc

Paradigme de Programare

Utilizarea Internetului in Afaceri FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 4. Dezvoltarea site-urilor si blog-uri

Laborator - Configurarea Rutelor IPv4 Statice și Implicite Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gate

Baze de date

FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior Universitatea Babeş-Bolyai Cluj-Napoca 1.2 Facultatea Facultatea de Mate

Microsoft Word - CarteC.doc

Gestionarea I/E

Fgggfbn x

RZOLVARE EXERCITIU ZODII declare cursor distributie_zodie is select nume_zodie, count(*) distributie from zodiac z join utilizatori u on to_date(to_ch

Generated by Unregistered Batch DOC TO PDF Converter , please register! Platformă de e-learning și curriculă e-content pentru învățămâ

STORY NAME: Young musician COPYRIGHT HOLDER: COPYRIGHT NOTICE: Telefilm Chisinau / OPEN Media Hub Ownership of content belongs to Telefilm Chisinau /

Microsoft Word - lab-fr_3

Microsoft Word - Ansamblul software CRONIS

Programarea şi utilizarea calculatoarelor

1. Depistarea setarilor de retea necesare Primul pas pentru introducerea in retea a DVR-ului este determinarea setarilor de retea cu care lucreaza ret

Microsoft Word - BD4_Curs11.doc

Prezentarea calculatorului

Example Title with Registration Microsoft® and Trademark SQL ServerTM

AcadNet Etapa Naţională Secțiunea calculatoare, clasele Citiți cu atenție toate subiectele înainte de a începe rezolvarea. Aveți 15 minut

Laborator 8: PROIECTAREA BAZELOR DE DATE SUBPROGRAME in PL/SQL (partea II - functii) Un subprogram este un bloc PL/SQL cu nume (spre deosebire de bloc

PowerPoint Presentation

Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Pu

Proiectarea Sistemelor Software Complexe

Sisteme de calcul în timp real

Lucrarea 10

Microsoft Word - Curs 11 - PHP.doc

INTREBARI FRECVENTE SI MANUAL DE UTILIZARE hub.sendsms.ro

EXCEL FĂRĂ SECRETE Grafice şi diagrame

Damoc Alina Timofte Maria 1. Rezumat: Implementarea unui dispozitiv ce permite verificarea tempe

Slide 1

Creational design patterns

Slide 1

Biomedical Wi-Fi data transmissons

Creational design patterns

Entrepreneurship and Technological Management

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Microsoft Word - lab1_2007.doc

Programe derulate în ediția a treia Junior IT Fun Factory *În cadrul Junior IT Fun Factory fiecare înscriere se face pentru un program individual în f

Proceduri stocate Syntax: CREATE PROCEDURE <Name> type1,...] AS -- secventa de comenzi SQL GO O procedura stocata se ruleaza cu EXEC: EXEC <N

Raportarea serviciilor de dializă la nivel CNAS

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

PowerPoint Presentation

Comanda si supravegherea centralelor termice de putere

Example Title with Registration Microsoft® and Trademark SQL ServerTM

Microsoft Word - Catalin Vrabie_Elemente de IT paginat VOL. II.doc

Fgggfbn x

Transcriere:

Cursul 10 Shell scripting Utilizarea Sistemelor de Operare (USO) 16 decembrie 2016 Automatica si Calculatoare Cursul 10, Shell scripting 1/42

Moto Some people, when confronted with a problem, think I know, I ll use regular expressions. Now they have two problems. Jamie Zawinski (JWZ) Automatica si Calculatoare Cursul 10, Shell scripting 2/42

Stocarea și prelucrarea datelor Automatica si Calculatoare Cursul 10, Shell scripting 3/42

Stocarea datelor http://www.quickmeme.com/p/3vzsz0 Automatica si Calculatoare Cursul 10, Shell scripting 4/42

Suport curs Suport (Introducere în sisteme de operare) Capitolul 12 Shell scripting Secțiunile 12.4, 12.5, 12.6, 12.9 Regular Expressions Cookbook Capitolul 1 Introduction to Regular Expressions Capitolul 2 Basic Regular Expression Skills Automatica si Calculatoare Cursul 10, Shell scripting 5/42

Cuprins Splitting Script-uri shell Expresii regulate Shell scripting pentru automatizare Concluzie Automatica si Calculatoare Cursul 10, Shell scripting 6/42

Date tabelare linii (rows) și coloane (columns) există un separator de câmpuri (de coloane): field separator separatorul de linii este caracterul newline (linie nouă, \n) parsarea se referă în general la împărțirea câmpurilor/coloanelor de pe fiecare linie (splitting) Automatica si Calculatoare Cursul 10, Shell scripting 7/42

Separatorul de câmpuri field separator sau field delimiter selectează coloane; o coloană este separată de altă prin field separator poate fi un caracter (virgulă, tab, spațiu) sau un set de caractere (semne de punctuație) utilitarele care fac split precizează caracterul sau setul de caractere pentru separare opțiunea -d la cut opțiunea -F la awk opțiunea -s la sort string.split() în Python String.split() în Java Automatica si Calculatoare Cursul 10, Shell scripting 8/42

Splitting împărțirea unui format text/tabelar în coloane de obicei sunt selectate anumite coloane apoi se pot executa operații cu acele coloane Automatica si Calculatoare Cursul 10, Shell scripting 9/42

Exemple de splitting în shell Extragerea numelui de utilizator și a directorului home cut -d : -f 1,6 < /etc/passwd awk -F : print $1, $6; < /etc/passwd Automatica si Calculatoare Cursul 10, Shell scripting 10/42

Cuprins Splitting Script-uri shell Expresii regulate Shell scripting pentru automatizare Concluzie Automatica si Calculatoare Cursul 10, Shell scripting 11/42

One liner înlănțuirea unor comenzi de obicei legate prin operatorul pipe ( ) http://www.bashoneliners.com/ Automatica si Calculatoare Cursul 10, Shell scripting 12/42

Moduri de input pentru o comandă o comandă primește parametri touch file1 file2... zip -r my.zip path1 path2... gcc -o exec obj1 obj2... folosite în conjuncție cu operatorul de command epxansion: $(...) zip -r $(generic_command that outputs file names) o comandă primește input la intrarea standard (filtre de text) gemeric_command grep include generic_command sort -t : -k 2 generic_command sed s/ana/bogdan/g Automatica si Calculatoare Cursul 10, Shell scripting 13/42

Filtre de text All is text. (Unix) comenzi care,,filtrează text Sintaxă pentru filtre de text filtru < input_file > output_file command1 filtru command2 operații selectare linii selectare coloane (după separator) prelucrare linii (modificare elemente) contabilizare cat, tac, rev, nl, head, tail, sort, grep, column, paste, join, sed, awk Automatica si Calculatoare Cursul 10, Shell scripting 14/42

Ce este un script shell? o înșiruire de comenzi shell este interpretat de shell: se interpretează, pe rând, fiecare comandă pe lângă comenzi externe, sunt folosite și comenzi interne precum if, for, while, case facilități shell precum command expansion variabile Automatica si Calculatoare Cursul 10, Shell scripting 15/42

Variabile server=141.85.224.218 ssh -l root "$server" username="johnny" sudo useradd -m -d /home/"$username" -s /bin/bash "$username" base_folder="/home/student/uso/scripts" zip -r scripts.zip "$base_folder" Automatica si Calculatoare Cursul 10, Shell scripting 16/42

Shell scripting pentru prelucrarea datelor pentru one linere folosim, în general, filtre de text pentru lucruri mai ample folosim while read; pentru lucruri mai complexe awk și sed IFS: Input Field Separator while + read: sunt split câmpurile fiecărei linii și trecute în variabile variabilele pot fi apoi folosite în shell Automatica si Calculatoare Cursul 10, Shell scripting 17/42

Construcția while read Extragerea numelui de utilizator și a directorului home IFS=":"; while read user x y z t home v; do echo "$user:$home"; done < /etc/passwd Selectarea după o notă IFS=$ t ; while read student group grade; do if test grade -ge 7; then echo "$student,$grade"; fi; done < students.txt Automatica si Calculatoare Cursul 10, Shell scripting 18/42

Construcția for Parcurgerea fișierelor dintr-un director for f in *; do cat "$f" done Parcurgerea elementelor dintr-o listă for group in "311CA" "312CA" "313CA" "314CA" "315CA"; do no=(./get-students-in-group "$group") # custom script echo "Group $group has $no students." done Parcurgerea utilizatorilor din sistem for user in $(cut -d : -f 1); do nlogins=$(last "$user" grep "^$user" wc -l) echo "User $user logged in $nlogins times recently." done Automatica si Calculatoare Cursul 10, Shell scripting 19/42

Construcția if Check if file exists if test -f "$file"; then echo "File $file exists." fi Check if number is between 1 and 5 if test "$num" -ge 1 -a "$num" -le 5; then echo "$num is between 1 and 5." else echo "$num is not between 1 and 5." fi Check if proper number of arguments if test "$#" -ne 1; then echo "Usage: $0 argument" echo "You must provide a single argument to the script." exit 1 fi Automatica si Calculatoare Cursul 10, Shell scripting 20/42

Cuprins Splitting Script-uri shell Expresii regulate Shell scripting pentru automatizare Concluzie Automatica si Calculatoare Cursul 10, Shell scripting 21/42

Utilizare regular expressions sau regex căutare (searching, pattern matching) validarea unui șir, a unui text, a unei intrări (număr de telefon, URL, nume de variabilă, adresă MAC) substituirea unei expresii Automatica si Calculatoare Cursul 10, Shell scripting 22/42

Exemple grep Check if file exists grep #include grep ^include grep ^[ ]*include grep ^[ \t]*$ Automatica si Calculatoare Cursul 10, Shell scripting 23/42

Probleme cu expresii regulate http://xkcd.com/1171/ http://www.twoproblems.com/ Automatica si Calculatoare Cursul 10, Shell scripting 24/42

Când să nu folosești expresii regulate când există parsere când există aplicații, tool-uri, funcții mai bune pentru a face acest lucru pentru anumite tipuri de date (adrese de e-mail, HTML): fie nu se poate, fie e foarte greu, fie va ieși o arătare de cod atunci când, folosite abuziv, fac codul nementenabil/nelizibil Automatica si Calculatoare Cursul 10, Shell scripting 25/42

Exemple de expresii regulate Expresie regulată [_a-za-z][_0-9a-za-z]* 07[:digit:]{8} [:upper:][:alpha:]+ [:digit:]{2}\.(pdf png svg) ([01][:digit:] 2[0-3]):[0-5][:digit:] ^[:upper:]{1,10}$ Explicație nume de variabilă/funcție număr de telefon numele unei persoane nume fișiere din două cifre și diferite extensii timp în ore și minute linii conținând maxim 10 majuscule Automatica si Calculatoare Cursul 10, Shell scripting 26/42

Metacaractere în expresii regulate Metacaracter Efect ^ (caret) început de linie $ (dollar) sfârșit de linie. (dot) orice caracter [... ] (square brackets) set de caractere? (question mark) expresia anterioară cel mult o dată * (star) expresia anterioră de oricâte ori posibil niciodată + (plus) expresia anterioră de oricâte ori cel puțin o dată e1 e2 (or) expresia de dinainte sau cea de după Automatica si Calculatoare Cursul 10, Shell scripting 27/42

regex vs. globbing globbing este folosit în shell, în special pentru filename expansion globbing poate fi considerat o formă mai slabă de expresie regulată expresiile regulate sunt puternice, cu mai multe cazuri de utilizare și suport în majoritatea limbajelor/framework-urilor moderne Metacaracter Rol în globbing Rol în regex. nimic special orice caracter [... ] set de caractere set de caractere * orice caracter de oricâte ori expresia anterioară de oricâte ori? orice caracter expresia anterioară o dată sau niciodată directorul home nimic special Automatica si Calculatoare Cursul 10, Shell scripting 28/42

Suport pentru expresii regulate utilitare shell: grep, awk, sed limbaje de programare: Perl, Python, PHP, Ruby, Java, JavaScript, C++11 editoare: Vim, Emacs baze de date biblioteci cu suport de expresii regulate: Gnulib Automatica si Calculatoare Cursul 10, Shell scripting 29/42

Cuprins Splitting Script-uri shell Expresii regulate Shell scripting pentru automatizare Concluzie Automatica si Calculatoare Cursul 10, Shell scripting 30/42

Utilizare shell scripting prelucrare de date task-uri simple quick n dirty se folosesc filtre de text: prelucrează text (la intrare, și la ieșire): head, tail, grep, cut, tr, awk, sed automatizare task-uri repetitive se pun comenzile în cauză într-un script shell se rulează scriptul la nevoie Automatica si Calculatoare Cursul 10, Shell scripting 31/42

Automatizare mai multe comenzi (eventual înlănțuite) e vorba de comenzi comune, nu neapărat (chiar foarte rar) filtre de text poate fi vorba de comenzi de prelucrare de imagini poate fi vorba de comenzi de procesare de fișiere (din L A TEXîn PDF) poate fi vorba de descărcat fișiere de la distanță scriptul se rulează periodic sau la nevoie nu este obligatoriu să folosiți construcții precum for, while sau if un script trebuie să își facă treabă, nu trebuie să fie limbaj de programare puteți avea one linere în script Automatica si Calculatoare Cursul 10, Shell scripting 32/42

Mindset legat de shell scripting să fie quick n dirty; dacă e prea complicat trebuie mers la un limbaj de programare keep it simple: nu folosi expresii regulate sau construcții complicate fără să fie cazul; a.k.a. nu te lega la cap fără să te doară mintea la obiectiv: ce vreau să obțin? best tool for the best job folosește tot ce există, nu reinventa roata, DRY: don t repeat yourself documentează-te în prealabil: măsoară de două ori si taie o dată este posibil să existe o comandă sau opțiunea unei comenzi care să facă (parte din) ceea ce dorești niciodată nu vei ști suficient de mult shell scripting: documentează-te, exersează și îmbunătățeste Automatica si Calculatoare Cursul 10, Shell scripting 33/42

Sfaturi legate de shell scripting nu folositi shell scripting pentru ceea ce se face mai bine/usor/eficient in Python, C, Java, Ruby, PHP etc. nu reinventați roata folosiți ghilimele când referiți valoarea unei variabile folosiți cea mai bună opțiune (cut, grep, tr, awk, sed, while read) după nevoie folosiți opțiuni de tip expresii regulate sau similare între apostrofuri http://mywiki.wooledge.org/bashfaq Automatica si Calculatoare Cursul 10, Shell scripting 34/42

Cuprins Splitting Script-uri shell Expresii regulate Shell scripting pentru automatizare Concluzie Automatica si Calculatoare Cursul 10, Shell scripting 35/42

Shell scripting două cazuri de utilizare: prelucrare de date și automatizare de date două tipuri de input pentru comenzi: parametri și intrarea standard (filtre de text) keep it simple don t repeat yourself expresille regulate pot să încurce în loc să ajute nu este obligatoriu să folosiți for, while, if; shell scripting nu e programare Automatica si Calculatoare Cursul 10, Shell scripting 36/42

Regular Expressions Cookbook Jan Goyvaerts, Steven Levithan creatorii http://www.regular-expressions.info/, http://regexpal.com/ 2nd Edition practică, multe,,rețete o recenzie aici: http://blog.codinghorror.com/ regular-expressions-for-regular-programmers/ Automatica si Calculatoare Cursul 10, Shell scripting 37/42

Larry Wall http://en.wikipedia.org/wiki/file:larry_wall_yapc_2007.jpg creatorul Perl BDFL pentru proiectul Perl autorul programului patch câștigător al International Obfuscated C Code Contest Automatica si Calculatoare Cursul 10, Shell scripting 38/42

Rackspace companie de hosting IT fondată în 1996 unul dintre principalii furnizori de servicii cloud (Rackspace Cloud) contribuitor la OpenStack folosit de GitHub Automatica si Calculatoare Cursul 10, Shell scripting 39/42

Lua limbaj de programare de scripting paradigme multiple (la fel ca Python) proiectat pentru a fi ușor încorporat în alte limbaje API C simplu limbaj de scripting pentru dezvoltatorii de jocuri folosit de limbajul de scripting al utilitarului nmap folosit pentru configurarea managerului de ferestre Awesome Automatica si Calculatoare Cursul 10, Shell scripting 40/42

Cuvinte cheie splitting separator de câmpuri one liner filtru de text script shell IFS while read for if expresii regulate metacaractere globbing grep prelucrare de date automatizare Automatica si Calculatoare Cursul 10, Shell scripting 41/42

Resurse utile Jon Goyvaerts, Steven Levithan: Regular Expressions Cookbook http://www.regular-expressions.info/ http://regexpal.com/ http://www.regexr.com/ http://www.twoproblems.com/ http://koala.cs.pub.ro/training/wiki/medium-unix/home http://koala.cs.pub.ro/training/wiki/advanced-unix/home Automatica si Calculatoare Cursul 10, Shell scripting 42/42