Tema 2

Ce trebuie să știu? Studiați secțiunea de Cunoștințe evaluate și suportul agregat necesar temei. Nu contactaţi responsabilii de temă pe mail privat decât dacă aceştia vă cer explicit (e.g. pentru debugging local, vizualizarea unor comenzi din rezolvare). Pentru orice fel de întrebare VĂ RUGĂM SĂ FOLOSIŢI FORUMUL!!!

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, vă 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.

Informații generale

Deadline: 1 Decembrie 2021 ora 23:55
Timp de lucru: 15 zile
Punctaj: 1.0 punct din nota finală

Actualizări enunț:

  • Nu există actualizări

Actualizări checker:
Versiunea curentă: versiunea 1.0.7

  • Ultimul update: Ora 13:10, 25 Noiembrie 2021
  • Rulati sudo uso update

Cunoștințe evaluate

Se recomandă citirea cu atenție a întregului enunț înainte de rezolvarea task-urilor sau de a pune întrebări pe forum sau colegilor din jur!

Testarea temei. Finalizarea temei. Mașină virtuală.

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!

Este interzisă publicarea pe forum a comenzilor sau pozelor care fac parte din rezolvarea parțială sau integrală a temei ori a unui task. Dacă e necesar acest lucru vă rog să contactaţi în privat responsabilii de temă, la specificarea explicită a acestora pe forum!

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.

Task obligatoriu pentru toate temele la final

Când finalizați tema, asigurați-vă că ați submis tema cu sudo uso submit.

Este interzis studenților să modifice parametrii de rulare ai mașinii virtuale. Orice tentativă malițioasă de modificare a fișierelor și executabilelor care fac mașina virtuală sa ruleze in parametrii optimi (fișierele si folderele ce nu țin de enunțul temei curente), ne conferă dreptul de a oferi 0 puncte pe temele respectivului student.

Cerinţele temei

Pregătire checker

Porniţi lucrul la tema 2

student@usohomework:~$ sudo uso start 2

După ce vă conectați cu user-ul și parola de pe moodle pe platforma de teme, introduceți codul primit mai sus când ați rulat sudo uso start 2 pentru a porni tema!

Dacă vom anunţa pe forum că apar modificări la checker trebuie rulată comanda următoare. Mai jos vedeți cum trebuie să arate outputul la succes:

student@usohomework:~$ sudo uso update
User logged in as: mbarbulescu
Updatam tema. Te rog asteapta...
Tema updatata.

Conexiune SSH

Conectaţi-vă la maşina virtuală folosind SSH. ESTE RECOMANDAT SĂ LUCRAŢI FOLOSIND SSH LA ACEASTA TEMĂ, veţi avea nevoie de lucru în mai multe terminale!

mihai@wormhole:~$ ssh -l student -p 2222 localhost
 
Warning: Permanently added '[localhost]:2222' (ECDSA) to the list of known hosts.
student@localhost's password: 
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.19.0-041900rc8-generic x86_64)
(...)
Last login: Sun Nov 25 21:01:19 2018 from 10.0.2.2
 
student@usohomework:~$ 

Pentru cei la care host-ul pe maşina fizică este Windows puteţi folosi utilitarul Putty. Aveţi aici un tutorial de Putty. Pur şi simplu alegeţi ca IP 127.0.0.1, protocol SSH, port 2222. Open and have fun. Deschideţi atâtea instanţe de Putty câte terminale aveţi nevoie (recomandăm minim 5 - 4 containere, 1 pentru maşina de USO). De asemenea, puteți folosi client-ul built-in de ssh al Windows-ului (mai multe detalii aici)

Revedeţi şi Task-ul 3 de la Tema 0

Task 01 (15p)

Verificarea conexiunii la Internet pe mașina virtuală

Găsiți prin orice comandă interfața disponibilă si verificați că aveți IP pe interfața găsită. Salvați acest output într-un fișier numit: ”/home/student/tema2/task1/conexiune_internet.txt”

Verificați conectivitatea către un IP din Internet:

Trimiteți exact 8 pachete la un interval de 4 secunde fiecare către serverul DNS Google 8.8.8.8 folosind utilitarul ping. Salvați outputul într-un fișier numit: ”/home/student/tema2/task1/conexiune_server.txt”

Verificați conectivitatea către un site:

Trimiteți exact 5 pachete la un interval de 2 secunde fiecare la adresa www.google.com folosind utilitarul ping. Salvați outputul într-un fișier numit: ”/home/student/tema2/task1/conexiune_web.txt”

Task 02 (10p)

GitHub este o platforma de stocare și versionare a codului. Folosind informațiile obținute în laboratorul “06 - Dezvoltarea aplicațiilor”, obțineți repository-ul următor la voi pe calculator: https://github.com/ClaudiuChelcea/USO-TEMA-2 și salvați-l la adresa: /home/student/tema2/task2, astfel rezultând folderul /home/student/tema2/task2/USO-TEMA-2.

După ce ați obținut repository-ul, extrageți fișierele în același folder și ștergeți arhiva!

Hint: git clone

Task 03 (15p)

Makefiles sunt o modalitate simplă de a organiza compilarea codului. Folosind informațiile obținute în laboratorul '06 - Dezvoltarea aplicațiilor', creați un fișier Makefile, salvat la adresa /home/student/tema2/task2/USO-TEMA-2, respectând cerințele de mai jos:

Pentru a primi punctajul, trebuie să respectați toate regulile de mai jos!

1. Numele fișierului sursă trebuie să apară o singură dată!

2. Fișierul sursă NU va fi recompilat dacă asupra sa nu se aduce nicio modificare!

3. La rularea comenzii “make clean” fișierele de tip obiect și fișierele executabile vor fi șterse!

4. Fișierul executabil rezultat va avea numele 'Test'.

Task 04 (16p)

Multe proiecte mari sunt realizate folosind git. Acest mod de a realiza proiecte permite unor zeci sau sute de persoane să contribuie în același timp la proiect, fără a se încurca unul pe celălalt. Acest task își propune să va familiarizeze cu modul în care cineva poate contribui la un proiect pe gît.

Vom folosi un proiect open-source, existent pe Github, numit (Unikraft). Proiectele de asemenea anvergură permit doar unor anumite persoane să facă modificări direct în repository. Celelalte persoane, care vor să contribuie, trebuie să treacă prin mai mulți pași pentru a adaugă o contribuție:

  • realizarea unui fork, adică a unei copii a repository-ului, pe contul propriu
  • crearea unui branch, în care să fie făcute modificările dorite
  • în cazul Unikraft, semnarea fiecărui commit
  • crearea unui Pull Request, prin care se solicită integrarea branch-ului creat înainte în repository-ul original

La acest task vi se cere să realizați pașii de mai sus, fără crearea unui Pull Request.

Astfel, aveți de realizat următoarele:

  • un fork propriu al proiectului Unikraft, care apoi va fi clonat în mașina de teme [4p]
  • configurarea git, pe mașina de teme, adăugând o identitate (nume și email) [4p]
  • crearea unui branch nou, pe fork-ul clonat; numele brach-ului trebuie să fie același cu username-ul de pe GitHub [4p]
  • un commit semnat, care să aducă o modificare repository-ului (ex. creați un fișier gol) [4p]

  • repository-ul clonat se va afla in folderul /home/student/tema2/task4/
  • cautati informatii despre git config si Sign Off pentru a realiza task-urile

  • Fisierul CONTRIBUTING.md din Unikraft contine informatii utile, care va pot ajuta in rezolvarea cerintelor.

Task 05 (10 p)

Un prieten vă cere ajutorul cu un virus. El vă spune că, de fiecare dată când pornește sistemul său, acesta se blochează după câteva minute. Virusul acesta se multiplică la un anumit interval de timp, umplând memoria sistemului cu procese, care nu fac nimic util.

Task-ul vostru este să opriți toate procesele malițioase, folosind o singură comandă. Prin “o singură comandă” se înțelege ceva executat în terminal, după o singură apăsare a tastei enter, care nu conține comenzi înlănțuite prin ;.

Pentru acest task, aveți de realizat următoarele:

  • căutați cum pot fi oprite, cu o singură comandă, mai multe procese
  • rulați sudo /home/student/tema2/task5/task5
  • gășiți procesele pe care trebuie să le opriți si opriți-le
  • scrieți în fișierul /home/student/tema2/task5/sol.txt comanda folosită

  • Dacă nu sunteți suficient de rapizi în oprirea proceselor, mașină virtuală se va bloca!
  • Rulați script-ul de start doar când sunteți siguri că știți cum să opriți procesele.

Task 06 (14p)

Fiind studenți la UPB, aveți unele beneficii. Unul dintre ele posibilitatea de a folosi mașini din cloud-ul facultății. Vă puteți conecta la aceste mașini folosind username-ul și parola de pe Moodle în felul următor: ssh <user>@fep.grid.pub.ro

Aveti de realizat urmatoarele task-uri:

  1. faceți configurația necesară pentru a vă putea conecta la fep fără a vi se cere parola, prin ssh. [7p]
  2. faceti configuratia necesara pentru a va conecta la fep folosind doar comanda ssh fep. Din nou, conectarea trebuie sa fie fara parola. [7p]

Acest lucru se poate realiza prin folosirea unei perechi de chei.

  • Pentru ca checker-ul să poată verifica că ați făcut configurația corectă, va trebui să scrieți în fișierul /home/student/tema2/task6/user.txt username-ul vostru de pe moodle.
  • La generarea cheilor, folosiți setările default. Checker-ul se așteaptă ca fișierele care conțin cheile să aibă denumirea și locația implicită (~/.ssh/id_rsa[.pub])

Task 07 (20p)

Creați un fișier /home/student/tema2/task7.sh care să conțină comenzile ce realizează următoarele:

  • Trimite o cerere HTTP de tip GET la $TASK_API/uso/part1/$SECRET_KEY. Aceasta vă va întoarce un token cu o durată de viață de 3 minute.
  • Trimite o cerere HTTP de tip POST la $TASK_API/uso/part2 cu un body de tip JSON de forma {“secret_key”: $SECRET_KEY, “token”: <token_primit>}.

La final, dacă se rulează comenzile din fișier, ar trebui să fie afișat doar rezultatul primit după a doua cerere, fără newline (\n).

Task obligatoriu pentru toate temele la final

Când finalizați tema asigurați-vă că ați submis tema cu sudo uso submit.

uso/teme/tema-2.txt · Last modified: 2021/11/25 13:15 by cristian.vijelie
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0