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
