Exercicis: Subprocessos
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Objectius
En aquests exercicis treballarem:
Creació i gestió de subprocessos.
Comunicació amb subprocessos mitjançant els seus canals d'entrada i eixida.
Gestió d'errors i excepcions relacionades amb subprocessos.
Els exercicis marcats amb ✅ seran corregits a classe.
Estructura del projecte
Tots els exercicis han de complir amb la següent estructura:
Cada exercici ha d'anar dins del directori corresponent.
El nom del fitxer ha de coincidir amb el títol de l'exercici.
El format de l'eixida del programa ha de ser consistent amb el format demanat.
La lògica d'aplicació ha d'estar organitzada en classes i mètodes; és recomanable afegir docstrings.
Exercicis
ud5/subprocessos
✅ date.py
Crea un programa que execute la comanda date del sistema operatiu i mostre la data i hora actual.
Exemple d'ús
$ python date.py
2026 -01-15 14 :30:00
check-os.py
Crea un programa que detecte si s’està executant en Linux o Windows i execute una acció diferent segons el sistema operatiu.
El programa ha de:
✅ create-users.py
Crea un programa que reba com a paràmetre posicional la ruta d'un fitxer en format CSV amb la informació
d'usuaris (nom, cognoms i data de naixement).
nom,cognoms,data_naixement
John,Doe,1990-05-15
Jane,Smith,1985-10-30
El programa ha de llegir el fitxer i per a cada usuari, crear un nou usuari al sistema utilitzant la comanda useradd.
Comprovarà si el programa s'esta executant en permisos de superusuari.
Podeu comprovar-ho amb os.geteuid() == 0
El nom d'usuari serà la inicial del nom seguida del cognom (per exemple, jdoe per a John Doe).
Si ja existeix un usuari amb aquest nom, no es crearà i es mostrarà un missatge indicant-ho.
El shell per defecte serà /bin/bash.
Es crearà un directori home per a l'usuari.
La contrasenya inicial serà la data de naixement en format YYYY-MM-DD.
Exemple d'ús
$ python create-users.py usuaris.csv
User 'jdoe' created.
User 'jsmith' already exists. Skipping.
Ampliació: --dry
Afegeix una opció --dry que simule la creació dels usuaris sense executar realment la comanda useradd.
$ python create-users.py usuaris.csv --dry
[ DRY] : User 'jdoe' created.
[ DRY] : User 'jsmith' already exists. Skipping.
backup.py
Crea un programa que realitze una còpia de seguretat d'un directori especificat per l'usuari
a un fitxer comprimit .tar.gz. El programa ha de rebre com a paràmetres:
La ruta del directori a fer la còpia de seguretat.
La ruta on desar el fitxer de còpia de seguretat.
El nom del fitxer de còpia de seguretat ha de ser el nom del directori amb la data i hora actual afegida.
A més, el programa ha de gestionar els errors següents:
Comprovació que el directori d'origen existeix.
Comprovació que el directori de destí existeix.
Gestió d'errors durant la creació del fitxer de còpia de seguretat.
Exemple d'ús
$ python backup.py /path/to/data/ /path/to/backup
Backup created at /path/to/backup/data-20260115-143000.tar.gz
check-ping.py
Crea un programa que reba la direcció IP d'una xarxa i que verifique quins dispositius estan actius
en aquesta xarxa mitjançant la comanda ping.
Si no rep cap IP, utilitzarà la IP de la màquina local.
El programa ha de enviar un ping (com a màxim 4 respostes) a cada adreça IP especificada
i mostrar si respon o no.
Exemple d'us
$ python check-ping.py 192 .168.0.2 192 .168.0.16 192 .168.0.22
192 .168.0.2: active
192 .168.0.16: active
192 .168.0.22: doesn' t respond
📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent
a la pàgina web .
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.