This is an old revision of the document!
Thread nou? Nu. Pentru o ușoară parcurgere a mesajelor, folosiți thread-urile de discuții existente în cadrul forumului, fără a crea altele. În consecință, thread-urile (subiectele de discuții) nou create vor fi șterse.
Căutare. Căutați pe forum informația pe care doriți să o obțineți, înainte să puneți o întrebare. De cele mai multe ori, cineva a mai întrebat același lucru. În fiecare thread al forumului aveți informații despre cum puteți căuta în forum.
Printscreen/poză? Nu. În cazul în care doriți să publicați un printscreen pe forum, recomandăm folosirea site-urilor pentru partajarea gratuită a imaginilor, precum imgur sau alternativele sale, publicând pe forum doar link către printscreen. Pozele inserate în răspunsuri, vor fi șterse.
Actualizări. Urmăriți atât forumul cât și modificările aduse enunțului/checker-ului, modificări ce sunt publicate și explicate în paragrafele de mai jos.
Regulament. Înainte și în timpul realizării temei, vă rugăm să parcurgeți indicațiile legate de realizarea temelor, încluzând ce înseamnă o temă copiată și cum penalizăm temele copiate. Folosiți cu încredere forumurile de pe acs.curs.pub.ro pentru întrebări și neclarități legate de teme.
Întrebări frecvente. În timpul realizării temei, când vă loviți de probleme și aveți nevoie de suportul echipei de USO, parcurgeți și lista de întrebări frecvente întâlnite în cadrul temelor. Să țineți cont, va rugăm, și de recomandările de comunicare electronică.
Ajutor reciproc. Vă încurajăm ca atunci când găsiți soluția la o problemă pe care ați postat-o anterior pe forum să postați și soluția găsită. De asemenea dacă știți răspunsul la întrebările colegilor sunteți încurajați să le răspundeți.
Verificaţi toate indicaţiile din Tema 0 cu privire la maşina virtuală şi configuratiile necesare. Dacă aveţi probleme postați pe forum!
shebang
-ul #!/bin/bash
, adică:
#!/bin/bash #aici puneţi comenzile voastre
FOARTE IMPORTANT: Asiguraţi-vă că aţi dat drept de execuţie pentru toată lumea: chmod a+x /path/to/my/script.sh
sudo uso check
si sudo uso submit
.
Rularea unui script este echivalenta cu /cale/catre/script.sh
In cazul in care scriptul face ceva ce nu ar trebui, aveti grija sa corectati inainte sa dati
sudo uso check
sau sudo uso submit
. De asemenea sudo uso check
si sudo uso submit
șterg orice fisier ce trebuie creat de scripturile voastre înainte de a rula scriptul
(de exemplu la primul task, fisierul users
va fi sters de fiecare data pentru a ne asigura ca
scriptul îl genereazaă corect)
Pentru validarea tuturor celor 6 task-uri durata totală a checker-ului in cazul in care totul e corect e de aproximativ 1 minut pe un sistem cu 8 GB RAM si CPU i5 cu 2.5GHz
Aveţi voie, însă, să sugerați diferite abordări pe care mergeţi sau să dați idei generale (dar nu comenzi sau fişiere shell script) celorlalți chiar direct pe forum. Încurajăm clarificarea lucrurilor între studenţi atât timp cât nu sunt rezolvate cerinţele în mod direct.
Urmăriți indicațiile legate de realizarea temelor. La prima abatere studentul primește un avertisment, iar punctajul obținut pe temă îi este redus cu valoarea punctajului pe task-ul respectiv. Începând cu a doua abatere, se va anula întregul punctaj pe tema curentă. Temele anterioare sau cele viitoare nu vor fi afectate. Abaterile se păstrează pe parcursul semestrului. Ori de câte ori se încalcă această regulă, se va ține cont de istoricul abaterilor. Abaterile vor fi actualizate în catalog.
Când finalizați tema si asigurați-vă că ați submis tema cu sudo uso submit
.
Creaţi în /home/student
un director numit tema2-scripts
și un altul numit tema2-scripts-output
. În primul director veți pune toate fişierele necesare rezolvării temei, iar în al doilea veți genera toate fișierele după rularea scripturilor. Porniti lucrul la tema 2
student@usohomework:~$ sudo uso start 2
Verificarea temei
student@usohomework:~$ sudo uso check
X = (1..5)
. Tema are 6 task-uri:student@usohomework:~$ sudo uso check 5
sudo uso update
. Mai jos aveți un exemplu de update de chacker.
student@usohomework:~$ sudo uso update User logged in as: mbarbulescu Updatam tema. Te rog asteapta... Tema updatata.
Fiecare task are număr de puncte pe care checker-ul îl acordă în mod automat. Din nota maximă pe care o veţi obţine se pot scădea 10 puncte. Asistenţii vor evalua conţinutul scripturilor cerute şi a configuraţiilor de sistem din task-uri.
În directorul home/student/tema2-scripts
, creați un script numit users.sh
ce sortează alfabetic utilizatori din fișierul /etc/passwd
care lansează servicii în sistem și afișează numele și serviciile aferente acestora pentru primii 10. Numele utilizatorilor și serviciul aferent vor fi separate prin :
(ex. irc:irc). Scriptul va afișa informațiile în fișierul /home/student/tema2-scripts-output/users.out
.
Se apropie sărbătorile așa că trebuie să ne pregătim să dăm mesaje celor dragi în mod inteligent! Drept urmare, în cadrul acestui exercițiu veți crea un script care va genera automat mesajele pentru prieteni și familie.
Pentru început, vom porni de la mesajul din fișierul numit “template.txt” (fișier regăsit la următorul link de github).
<formula_adresare> <nume>,
-continut mesaj-
<formula_incheiere>,
<semnatura>
Scriptul va primi prin redirectare un fisier în care informațiile pentru fiecare contact se găsesc pe o linie diferită sub forma:
<NouaFormaDeAdresare>,<NumeleDestinatarului>,<UrareaDeFinal>,<SemnaturaExpeditor>
Noile fișiere create în urma rulării scriptului se vor afla într-un folder numit ChristmasMessages
, aflat in /home/student/tema2-scripts-output
, iar fiecare fișier din folder va avea următoarea denumire: MesajPentru<NumeleDestinatarului>
.
genisoimage
si tree
.
Gigel și-a cumpărat un Raspberry Pi și ar vrea să îl folosească pentru diferite scopuri. Gigel încă nu a auzit de virtualizare așa că s-a gândit să își țină copii ale sistemului de fișiere pe sistemul fizic. Astfel, pentru o sarcină anume, Gigel poate încărca în spațiul de stocare al Raspberry Pi-ului o imagine a sistemului de fișiere pentru a îndeplini o anumită sarcină.
Ajutați-l pe Gigel să creeze fișierul /home/student/tema2-scripts/mount_images.sh
care, primind ca argument tipul operațiunii, face următoarele:
“MOUNT”
:/home/student/extracted/$NUME_IMAGINE
–destination
, destinația devine calea ce succedă parametrul–directories
, copiază doar directoarele din lista care succedă parametrul. Usage: –directories=”dir1 dir2 dir3”
“CREATE”
:
În fișierul /home/student/tema2-scripts/weather.sh
creați un one-liner care primește argumente în linia de comandă. Argumentele sunt de forma <Oras temperatura vreme> (ex. Bucuresti 10 soare). Scriptul va realiza următoarele acțiuni:
/home/student/tema2-scripts-output/weather.info
.
./weather.sh Bucuresti 10 soare
fișierul weather.info
va conține linia Bucuresti 10 soare
.
#!/bin/bash
în fișier.
live.info
(dacă un oraș există, informațiile vor fi actualizate, dacă nu există, se va adăuga o intrare nouă). Fiecare linie din fișierul live.info
va fi de forma Oras temperatura vreme
.
./weather.sh Bucuresti 10 soare
și ./weather.sh Bucuresti 8 ploaie
fișierul live.info
va conține linia Bucuresti 8 ploaie
.
/home/student/tema2-scripts/weather_script.sh
care realizează aceleași acțiuni, dar poate primi argumentele în orice ordine.
weather.sh
.
./weather_script.sh soare 10 Bucuresti
și ./weather_script.sh Bucuresti ploaie 8
fișierul weather.info
va conține liniile Bucuresti 10 soare
și Bucuresti 8 ploaie
, iar fișierul live.info
va conține linia Bucuresti 8 ploaie
.
Creați un script în directorul /home/student/tema2-scripts/
numit animals.sh
care generează cu ajutorul utilitarului cowsay
toate imaginile din fișierul /home/student/tema2-scripts/cows.txt
, alături de mesajul primit, sortate lexicografic după mesaj.
Dacă un cowfile
nu se găsește la calea specificată în variabila de mediu COWPATH
, atunci nu se va genera imagine cu acesta.
Imaginile trebuie sa fie afișate una sub alta în fișierul /home/student/tema2-scripts-output/cows-results.txt
.
/home/student/tema2-scripts/cows.txt
o să fie generat automat de către checker. Acesta este alcătuit din mai multe linii în formatul <cowfile>,<message>
unde fiecare linie reprezintă o imagine specificată în variabila de mediu COWPATH
și un mesaj pe care să îl afișeze.
Utilitarul cowsay
se folosește de variabila de mediu COWPATH
pentru căutarea tuturor fișierelor cowfile
.
Realizați un script în directorul /home/student/tema2-scripts
numit backup_task.sh
care creează un director cu numele /home/student/tema2-scripts-output/backup-confs
și salvează în acesta toate fișierele cu extensia .conf
din /etc
(în mod recursiv), indiferent de tipul acestora.
/home/student/tema2-scripts-output/backup-confs/errors.txt
.
Mai departe, scriptul va realiza modificările necesare, astfel încât toate fișierele din directorul /home/student/tema2-scripts/backup-confs
de dimensiune mai mare de 1K să fie redenumite prin adăugarea sufixului _large
.
student
.
==== Task 07 (0p) ====
Creați un fișier numit readme.txt
în folder-ul /home/student/tema2-scripts
(același în care ați pus și script-urile). Conținutul acestuia este:
Prima linie: nume,prenume,grupa
Urmatoarele linii: Task0X - descriere succinta (maxim 3 randuri) a modului in care ai rezolvat + erorile raportate de checker si de ce considerați că e correct cum ați făcut.
La final: alte probleme generale pe care le-ați avut la checker independent de un task specific. Nu scrieți prea mult, fiți clari, succinți și punctați strict problema și ce ați încercat.
/home/student/tema2-scripts
==== Task obligatoriu pentru toate temele la final ====
Când finalizați tema asigurați-vă că ați submis tema cu sudo uso submit
.
/home/student/tema2-scripts
. Verificați înainte de submit că ele sunt acolo!