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.
sudo uso update
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!
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, asigurați-vă că ați submis tema cu sudo uso submit
.
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!
student@usohomework:~$ sudo uso update User logged in as: rares.shefu.thau Updatam tema. Te rog asteapta... Tema updatata.
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)
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”
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”
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”
GitHub este o platforma de stocare și versionare a codului. Folosind informațiile obținute în laboratorul “08 - Dezvoltarea aplicațiilor”, obțineți repository-ul următor la voi pe calculator: https://github.com/RaresCon/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!
În urma rezolvării task-ului 02, aveți în folderul /home/student/tema2/task2/USO-TEMA-2
un fișier care conține un text foarte lung, long_story_short.txt
, pe care va trebui să îl copiați în folderul /home/student/tema2/task3/
. Pentru că doriți să aflați anumite informații din acest text, veți folosi diverse acțiuni asupra acestuia, acțiuni pe care le puteți găsi și în cadrul laboratoarelor “06 - Îmbunătățirea lucrului în linia de comandă” și “07 - Automatizarea în linia de comandă”.
;
.
[5p] 1. Vreți să vedeți rândurile care conțin cel puțin un cuvânt care începe cu substringul “con” sau se termină cu substringul “to”, căutarea nu este case sensitive. Înțelegem prin cuvinte care încep/se termină cu un substring, cuvinte care au la început/final doar whitespace/new line/semne ortografice sau de punctuație înainte/după substringul respectiv. În urma aplicării căutării, veți stoca rândurile rezultate în urma comenzii într-un fișier task3_1.txt în folderul /home/student/tema2/task3/
.
[6p] 2. Acum că aveți toate rândurile care conțin cuvintele potrivite, vreți să le sortați alfabetic folosind primul cuvânt al fiecărui rând, iar apoi să salvați primele 10 rânduri și ultimele 10 rânduri rezultate în urma sortării, în această ordine. Output-ul comenzii va fi salvat întru-un fișier task3_2.txt în folderul /home/student/tema2/task3/
.
[4p] 3. Deși acum aveți un fișier mult mai scurt, nu vreți să luați fiecare rând în parte pentru a verifica dacă cel de-al doilea cuvânt are la început litera “m” sau “e”, așa că, folosind și aici o singură comandă în terminal, extrageți toate rândurile care respectă condiția anterioară în ordinea în care acestea apar în fișierul task3_2.txt și redirectați-le în fișierul task3_3.txt în folderul /home/student/tema2/task3/
. Prin cel de-al doilea cuvânt al rândului întelegem stringul între primul și al doilea whitespace ale rândului.
awk
.
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 git.
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:
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:
git config
si Sign Off
pentru a realiza task-urile
CONTRIBUTING.md
din Unikraft contine informatii utile, care va pot ajuta in rezolvarea cerintelor.
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:
sudo /home/student/tema2/task5/task5
/home/student/tema2/task5/sol.txt
comanda folosită
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:
ssh fep
. Din nou, conectarea trebuie sa fie fara parola. [7p]
/home/student/tema2/task6/user.txt
username-ul vostru de pe moodle.
Creați un fișier /home/student/tema2/task7.sh
care să conțină comenzile ce realizează următoarele:
141.85.232.81:5000/uso/part1/$USERNAME
. Prin USERNAME vom simula modul de acces utilizand un username pe un server. USERNAME va trebui setat de voi ca variabila de mediu la username-ul personal de Teams (e.g. marcel.gigel02) pentru ca checker-ul sa functioneze. Token-ul primit prin aceasta cerere va fi disponibil un minut, dupa aceea va fi resetat si username-ul va fi sters.141.85.232.81:5000/uso/part2
cu un body de tip JSON de forma {“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
).
[2p] 1. Obțineți repository-ul următor la voi pe calculator: https://github.com/andreistan26/server-data și salvați-l la adresa /home/student/tema2/task8
, rezultând directorul /home/student/tema2/task8/server-data
. Apoi copiați fisierul connection-logs.txt in directorul /home/student/tema2/task8
.
[4p] 2. Dupa ce ați rezolvat pasul anterior veți avea in director fișierul connection-logs.txt, care conține in formatul <user-id> <inactive/active> <duration> date despre conexiunile utilizatorilor la un serviciu. Afișați conexiunile inactive in formatul <user-id> <duration> si pe ultima linie Total: <numar conexiuni inactive> in fișierul inactive_connections_out.txt. Salvați oneliner-ul in fișierul inactive_connections.sh.
[4p] 3. Gasiti cei 8 utilizatori care au cea mai lunga conexiune activă. Afișarea se va face in formatul <index>. <user-id> <duration> si salvată in fișierul longest_connections_out.txt. Salvați oneliner-ul in fișierul longest_connections.sh.
#!/bin/bash
/home/student/tema2/task8/
Când finalizați tema asigurați-vă că ați submis tema cu sudo uso submit
.