This is an old revision of the document!
Tema se rezolvă individual. Orice tentativă de copiere va rezulta în 0 puncte pentru tema respectivă. Vom utiliza și sisteme automate de detectare a copierii. Dacă avem dubii, vă vom adresa întrebări suplimentare legate de temă.
Dacă aveți întrebări legate de temă, vă rugăm să scrieți un issue pe repository-ul de github repository cu titlul de forma [busybox] <titlul întrebări voastre>. Aveți nevoie de un cont de github pentru a scrie întrebări.
Dacă doriți să primiți un email când se pun întrebări noi sau cand apar răspunsuri, accesați github repository și faceți click pe Watch.
Scopul acestei teme este implementarea unui utilitar capabil să execute comenzi tip Linux bash.
Pentru rezolvarea temei veți realiza un script Python care primește ca argumente comanda ce se dorește a fi executată, urmată de parametrii acesteia. Scriptul va executa comanda după care își va încheia execuția.
Exemplu:
python busybox.py cp file folder
În continuare, vom defini comenzile suportate de utilitar, împreună cu comportamentul caracteristic și parametrii pe care acestea de suportă. Pentru orice altă comandă sau orice alt format, scriptul va afișa mesajul Invalid command și va returna valoarea 1.
În cazul în care comanda primită de utilitar a fost rulată cu succes, acesta va returna valoarea 0. În caz contrar, acesta va returna valoarea 1.
Parametrii de forma [parametru] sunt optionali.
Comenzile suportate de aplicația mini-busybox sunt:
Exemplu:
$ python busybox.py pwd /home/pi/my_directories
Exemplu:
$ python busybox.py echo a b c a b c $ python busybox.py echo -n a b c a b c$
Exemplu:
$ python busybox.py cat file1 Text in file1 $ python busybox.py cat file2 Text in file 2 $ python busybox.py cat file1 file2 Text in file1 Text in file 2
Exemplu:
python busybox.py mkdir my_drectory python busybox.py mkdir my_drectory1 my_drectory2 my_drectory3
Exemplu:
python busybox.py mv my_file my_directory python busybox.py mv my_directory1 my_drectory2
Exemplu:
python busybox.py ln my_file my_file_link python busybox.py ln -s my_file my_file_link3
Exemplu:
python busybox.py rmdir my_empty_directory python busybox.py rmdir my_empty_directory1 my_empty_directory2
Exemplu:
python busybox.py rm my_file1 my_file2 python busybox.py rm -R my_directory python busybox.py rm --dir my_empty_directory
Exemplu:
$ python busybox.py ls directory1 Directory2 File1 file2 $ python busybox.py ls -a . .. directory1 Directory2 File1 File2 $ python busybox.py ls Directory2 f1 f2
Exemplu:
python busybox.py cp my_file my_directory python busybox.py cp -r my_directory1 my_directory2
Exemplu:
python busybox.py touch my_file python busybox.py touch -a --no-create my_file
Permisiunile pot fi specificate în două moduri:
Exemplu:
python busybox.py chmod 570 file python busybox.py chmod u+x file python busybox.py chmod ug+rx file python busybox.py chmod a-rx file
Pentru mai multe detalii despre cum modul de funcționare al fiecărei comenzi, puteți consulta manualul specific terminalului de Linux: man comanda. Comanda poate fi rulată în orice terminal de pe un sistem Linux sau în link-ul atașat comenzii, mai sus.
Tema se va încărca pe vmchecker. Logați-vă pe site cu folosind utilizatorul de pe moodle, selectați cursul Systemes d'Explotation (FILS) și încărcați arhiva temei.
Fișierul readme are următorul format:
Numele vostru întreg
Grupa
Descrierea rezolvării temei, de ce ați ales anumite soluții, etc.
Pentru a încărca tema, urmăriți pașii:
Arhiva trebuie să conțină toate fișierele (principale) în rădăcina, nu în subdirectoare. NU arhivați directorul temei, arhivați DIRECT fișierele. După ce încărcați arhiva, vmchecker va rula:
unzip archive.zip homework cd homework python3 busybox.py comanda parametrii