En aquest projecte, crearàs un script en Bash que recollirà i mostrarà informació detallada sobre el sistema. Aquest tipus d'script és molt útil per a administradors de sistemes i desenvolupadors que necessiten obtenir ràpidament informació sobre l'estat i la configuració del sistema.
Objectius del Projecte
- Aprendre a utilitzar comandes de Bash per recollir informació del sistema.
- Practicar la manipulació de cadenes i la sortida de dades.
- Crear un script que sigui fàcil de llegir i mantenir.
Requisits del Projecte
L'script ha de proporcionar la següent informació:
- Nom del sistema operatiu i versió.
- Nom de l'host.
- Temps d'activitat del sistema.
- Memòria total i memòria lliure.
- Espai en disc utilitzat i disponible.
- Informació sobre la CPU.
- Adreça IP de la màquina.
Estructura de l'Script
L'script es dividirà en seccions, cadascuna recollint i mostrant una part específica de la informació del sistema.
- Nom del Sistema Operatiu i Versió
Utilitzarem la comanda uname
i el fitxer /etc/os-release
per obtenir aquesta informació.
#!/bin/bash # Nom del Sistema Operatiu i Versió os_name=$(uname -s) os_version=$(grep 'VERSION=' /etc/os-release | cut -d '"' -f 2) echo "Sistema Operatiu: $os_name $os_version"
- Nom de l'Host
La comanda hostname
ens proporcionarà el nom de l'host.
- Temps d'Activitat del Sistema
La comanda uptime
ens donarà el temps d'activitat del sistema.
- Memòria Total i Memòria Lliure
Utilitzarem la comanda free
per obtenir informació sobre la memòria.
# Memòria Total i Memòria Lliure mem_total=$(free -h | grep Mem | awk '{print $2}') mem_free=$(free -h | grep Mem | awk '{print $4}') echo "Memòria Total: $mem_total" echo "Memòria Lliure: $mem_free"
- Espai en Disc Utilitzat i Disponible
La comanda df
ens proporcionarà informació sobre l'espai en disc.
# Espai en Disc Utilitzat i Disponible disk_usage=$(df -h / | grep / | awk '{print $3}') disk_available=$(df -h / | grep / | awk '{print $4}') echo "Espai en Disc Utilitzat: $disk_usage" echo "Espai en Disc Disponible: $disk_available"
- Informació sobre la CPU
Utilitzarem la comanda lscpu
per obtenir informació sobre la CPU.
# Informació sobre la CPU cpu_info=$(lscpu | grep "Model name" | cut -d ':' -f 2 | xargs) echo "Informació de la CPU: $cpu_info"
- Adreça IP de la Màquina
La comanda hostname -I
ens donarà l'adreça IP de la màquina.
# Adreça IP de la Màquina ip_address=$(hostname -I | awk '{print $1}') echo "Adreça IP: $ip_address"
Script Complet
Aquí tens l'script complet amb totes les seccions integrades:
#!/bin/bash # Nom del Sistema Operatiu i Versió os_name=$(uname -s) os_version=$(grep 'VERSION=' /etc/os-release | cut -d '"' -f 2) echo "Sistema Operatiu: $os_name $os_version" # Nom de l'Host host_name=$(hostname) echo "Nom de l'Host: $host_name" # Temps d'Activitat del Sistema uptime_info=$(uptime -p) echo "Temps d'Activitat: $uptime_info" # Memòria Total i Memòria Lliure mem_total=$(free -h | grep Mem | awk '{print $2}') mem_free=$(free -h | grep Mem | awk '{print $4}') echo "Memòria Total: $mem_total" echo "Memòria Lliure: $mem_free" # Espai en Disc Utilitzat i Disponible disk_usage=$(df -h / | grep / | awk '{print $3}') disk_available=$(df -h / | grep / | awk '{print $4}') echo "Espai en Disc Utilitzat: $disk_usage" echo "Espai en Disc Disponible: $disk_available" # Informació sobre la CPU cpu_info=$(lscpu | grep "Model name" | cut -d ':' -f 2 | xargs) echo "Informació de la CPU: $cpu_info" # Adreça IP de la Màquina ip_address=$(hostname -I | awk '{print $1}') echo "Adreça IP: $ip_address"
Exercicis Pràctics
- Modifica l'script per incloure la informació sobre la velocitat de la CPU.
- Afegeix una secció que mostri el nombre de processos en execució.
- Crea una funció dins l'script que imprimeixi la informació en un format més llegible, com per exemple, amb línies de separació entre cada secció.
Solucions als Exercicis
- Informació sobre la Velocitat de la CPU
# Velocitat de la CPU cpu_speed=$(lscpu | grep "CPU MHz" | cut -d ':' -f 2 | xargs) echo "Velocitat de la CPU: $cpu_speed MHz"
- Nombre de Processos en Execució
# Nombre de Processos en Execució process_count=$(ps aux | wc -l) echo "Nombre de Processos en Execució: $process_count"
- Funció per Imprimir Informació
print_info() { echo "==============================" echo "$1" echo "==============================" } # Utilitza la funció per imprimir cada secció print_info "Sistema Operatiu: $os_name $os_version" print_info "Nom de l'Host: $host_name" print_info "Temps d'Activitat: $uptime_info" print_info "Memòria Total: $mem_total" print_info "Memòria Lliure: $mem_free" print_info "Espai en Disc Utilitzat: $disk_usage" print_info "Espai en Disc Disponible: $disk_available" print_info "Informació de la CPU: $cpu_info" print_info "Velocitat de la CPU: $cpu_speed MHz" print_info "Nombre de Processos en Execució: $process_count" print_info "Adreça IP: $ip_address"
Conclusió
Aquest projecte t'ha permès crear un script en Bash que recull i mostra informació important sobre el sistema. Has après a utilitzar diverses comandes de Bash per obtenir dades del sistema, a manipular cadenes i a presentar la informació de manera clara i llegible. Aquest tipus d'script és una eina valuosa per a qualsevol administrador de sistemes o desenvolupador que necessiti monitoritzar l'estat del sistema de manera eficient.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git