User Tools

Site Tools


capitole:capitol-05

Capitolul 5: Shell scripting 2

Alocare de timp: 3 ore

Slide-uri de prezentare

Hands on (1)

  • Rulați următoarele comenzi pentru a genera niște fișiere și directoare.
cd ~
mkdir slash
cd $_
mkdir conf lib bin logs
cd conf
touch apache.conf bind.conf postfix.conf hosts services protocols
cd ..
cd lib
touch dns.so gethostbyname.so ip.so tcp.so smtp.so
cd ..
cd logs
mkdir apache bind postfix
touch apache/access.log apache/error.log bind/access.log bind/error.log postfix/access.log postfix/error.log
cd ..
cd bin
cp /bin/true apache
cp /bin/true postfix
cp /bin/true bind
cd ~
  • Găsiți toate fișierele și directoarele din directorul slash.
  • Găsiți toate fișierele ce au legătură cu apache.
  • Găsiți toate fișierele cu extensia .conf.
  • Găsiți toate fișirele .conf și creați un fișier de backup cu extensia .backup, exemplu apache2.conf → apache2.conf.backup.

* Găsiți toate numele de fișiere, fără calea lor.

  • Realizaţi un script numit checkfile.sh care:
    • primește ca argument un string și verifică dacă un fișier cu acest nume există pe disc în directorul curent
    • dacă fișierul nu există în directorul curent, acesta va fi creat cu numele dat ca argument
    • dacă fisierul există pe disc în directorul curent, acesta va fi redenumit în <nume-fișier-initial>_exista unde argument este argumentul transmis scriptului (numele fișierului)
    • Rulați scriptul de 2 ori cu același parametru.

Hands on (2)

  • Scrieți un script care primește doi parametri, start și count și afișează un număr de count procese începând de la indexul start, în ordinea crescătoare a PID-urilor. Hint: sort
  • Folosind sed scrieți un script care generează mail-uri în mod automat.

Ca date de intrare, creați un fișier cu structura:

nume,email
Alex,alex@example.com
Traian,traian@example.com

precum și un template, de genul:

Salut NUME!
...
Acest mesaj îți este adresat ție și numai ție.

Ca date de ieșire, scriptul va crea într-un director emails câte un fișier cu numele email personalizat pentru fiecare nume din fișierul dat.

  • Puteți face același lucru folosind bash? Dacă da, cum? Scrieți un alt script care folosește bash pentru înlocuiri.

Hands on (3)

  • Scrieți un script care crează copii de siguranță pentru toate fișierele din /etc sau un folder dat ca parametru, cu extensia .conf.
    • backupurile vor fi stocate într-un director cu numele: backup-YYMMDDHHmm din directorul curent (hint: date)
    • extensia copiilor de siguranță va fi .bak in loc de .conf

Hands on (4)

  • Programați ca peste 5 minute să fie creat un fisier executat în home-ul utilizatorului curent
  • Configurați ca scriptul de backup de la Hands on (3) să ruleze o dată la 10 minute.

Resurse utile

capitole/capitol-05.txt · Last modified: 2013/07/05 10:32 by alexef