Escenarios prácticos de mensajería
Monitoreo y reporte del sistema
Script de monitoreo de espacio en disco
#!/bin/bash
df_output=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ $df_output -gt 80 ]; then
echo -e "\e[31mAdvertencia: Uso de espacio en disco por encima del 80%\e[0m" >&2
fi
Verificación de conectividad de red
ping_result=$(ping -c 4 google.com)
if [ $? -eq 0 ]; then
echo "Conexión de red: Estable"
else
echo "Conexión de red: Inestable" >&2
fi
Escenarios de registro y notificación
Registro de eventos del sistema
log_system_event() {
local message="$1"
echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" >> /var/log/system_events.log
}
log_system_event "Inicialización del entorno LabEx completada"
Escenarios de interacción con el usuario
Prompts de usuario interactivos
read -p "Ingrese su nombre: " username
echo "Bienvenido, $username al entorno Linux de LabEx!"
Patrones de manejo de errores
Función con mensajes de error
backup_files() {
local source="$1"
local destination="$2"
if [! -d "$source" ]; then
echo "Error: El directorio de origen no existe" >&2
return 1
fi
cp -r "$source" "$destination" || {
echo "La copia de seguridad falló para $source" >&2
return 1
}
}
Patrones de flujo de mensajería
graph TD
A[Iniciar proceso] --> B{Validación}
B -->|Aprobar| C[Ejecutar tarea]
B -->|Rechazar| D[Mostrar mensaje de error]
C --> E[Registrar éxito]
D --> F[Registrar error]
E --> G[Finalizar proceso]
F --> G
Escenarios de mensajería comunes
Escenario |
Enfoque |
Comando de ejemplo |
Retroalimentación del usuario |
Echo con color |
echo -e "\e[32mTarea completada\e[0m" |
Reporte de errores |
Redirección de Stderr |
comando 2> error.log |
Ejecución silenciosa |
Redirección nula |
comando > /dev/null 2>&1 |
Mejores prácticas
- Utilice mensajes significativos y concisos
- Implemente un manejo adecuado de errores
- Utilice color para énfasis visual
- Registre eventos críticos del sistema
- Ofrezca una guía clara al usuario
Ejemplo de mensajería condicional
check_system_status() {
local critical_services=("ssh" "nginx" "mysql")
for service in "${critical_services[@]}"; do
systemctl is-active --quiet "$service" || {
echo -e "\e[31mAdvertencia: El servicio $service no está en ejecución\e[0m" >&2
}
done
}
Técnicas avanzadas de notificación
Alertas por correo electrónico
send_alert() {
local message="$1"
echo "$message" | mail -s "Alerta del sistema" [email protected]
}
Notificación de Telegram
send_telegram_alert() {
local message="$1"
curl -s -X POST \
"https://api.telegram.org/bot<YOUR_BOT_TOKEN>/sendMessage" \
-d "chat_id=<CHAT_ID>&text=$message"
}