Introducció
He creat scripts per automatitzar configuracions bàsiques en Windows i Linux. Concretament he fet dos scripts per sistema operatiu:
- Script base (actualització del sistema + instal·lació de paquets essencials).
- Script de gestió d’usuaris i seguretat (creació d’usuari administrador + configuració bàsica de firewall).
He seguit un procés iteratiu amb l’IA, he documentat totes les evidències i he organitzat el portafoli amb enllaços funcionals. L’objectiu era arribar a un nivell professional però senzill i robust.
Justificació de les decisions tècniques
He justificat totes les decisions tècniques perquè es vegi clarament el perquè de cada comanda, variable, condició i bucle.
Scripts per Linux (Bash)
He triat Bash perquè és l’intèrpret natiu a gairebé totes les distribucions Linux i permet scripts molt portables. Estructura general: shebang, set -e (per aturar el script si hi ha error), funció de logging, variables i comprovacions.
1. setup-base.sh
- #!/bin/bash i set -e: Assegura que el script s’atura immediatament si falla qualsevol comanda (bona pràctica que vaig aprendre consultant guies de scripting).
- LOG_FILE=»/var/log/automatitzacio-setup.log»: Variable per guardar el log.
- Funció log(): Bucle implícit amb tee -a per escriure al fitxer i a la consola.
- apt-get update -y && apt-get upgrade -y: Actualitza repositoris i paquets. He escollit apt-get en lloc d’apt perquè és més estable en scripts no interactius.
- apt-get install -y git curl vim ufw: Instal·la eines essencials.
- ufw default deny incoming, ufw allow ssh, ufw –force enable: Configuració bàsica de firewall.
2. gestio-usuaris.sh
- Variable $USERNAME i $PASSWORD.
- Condició if id «$USERNAME» &>/dev/null: Comprova si l’usuari ja existeix per evitar errors.
- useradd -m -s /bin/bash «$USERNAME»: Crea usuari amb home i shell.
- echo «$USERNAME:$PASSWORD» | chpasswd: Assigna contrasenya de forma segura.
- usermod -aG sudo «$USERNAME»: Afegeix permisos administratius.
Fonts consultades:
Alternatives descartades:
- Utilitzar Ansible: massa pesant per a una tasca bàsica.
- Fer-ho amb crontab per actualitzacions automàtiques: no era l’objectiu (volíem un script executable manualment).
- Utilitzar iptables directament: UFW és més senzill i recomanat per principiants.
Scripts per Windows (PowerShell)
He escollit PowerShell perquè és la ferramenta moderna de Microsoft, molt més potent que el CMD antic i permet objectes, try/catch i integració nativa.
1. Setup-Base.ps1
- #Requires -RunAsAdministrator: Obliga a executar com a administrador.
- Funció Write-Log: Similar a la de Linux, amb timestamp.
- winget upgrade –all –accept-source-agreements: Actualitza totes les apps.
- winget install –id Git.Git -e –silent: Instal·la paquets de forma silenciosa.
2. Setup-User.ps1
- Variables $User i $Pass = ConvertTo-SecureString ….
- Condició if (Get-LocalUser -Name $User -ErrorAction SilentlyContinue).
- New-LocalUser + Add-LocalGroupMember -Group «Administrators».
Fonts: Microsoft Learn – PowerShell scripting, documentació de winget. Alternatives descartades: CMD (massa limitat), Chocolatey (requereix instal·lació prèvia). Vaig triar winget perquè ja ve instal·lat per defecte a Windows 10/11.
Implementació – Els scripts (plenament funcionals i testejats)
Linux – setup-base.sh

Linux – gestio-usuaris.sh

Windows – Setup-Base.ps1

Windows – Setup-User.ps1

Procés d’iteració amb la IA (mínim 3 vegades per script)
Primera ronda: Vaig demanar scripts bàsics senzills. Sortien bé però sense logging ni gestió d’errors.
Segona ronda: Vaig demanar afegir logging, condicions i comprovacions (com el if per l’usuari).
Tercera ronda: Vaig demanar optimitzacions finals (set -e, funcions, comentaris exhaustius i bones pràctiques). Vaig ajustar les converses i vaig guardar tot al portafoli.
Els scripts s’han executat correctament en màquines virtuals (Ubuntu 22.04 i Windows 11).
