Saltar a contenido

📚 Módulo 6: Conectando tu terminal al mundo real

Duración estimada: según tu ritmo y experiencia.

Objetivo: Dominar el acceso remoto con ssh, obtener datos con curl y jq, y monitorear procesos con top y ps, explorando su utilidad técnica. 🎯

Prerrequisitos: Haber completado los Módulos 1, 2, 3, 4 y 5, acceso a un sistema Linux, macOS o WSL con una terminal y un editor de texto (nano, vim o VS Code), y, si posible, una máquina remota con ssh.

Nota: El tiempo varía según tu nivel y dedicación; necesitarás conexión a internet para algunas prácticas y permisos para ssh.


📖 Contenidos del Módulo

6.1. Acceso remoto con ssh: Conecta a otro mundo 🛡️

Teoría:

ssh (Secure Shell) permite acceder a máquinas remotas de forma segura. Usa formato ssh usuario@ip y requiere clave o contraseña. Técnicamente, es esencial para administración remota.

Práctica:

  1. Verifica si ssh está instalado:
    ssh -V
    
    Muestra la versión instalada.
  2. Conecta a una máquina remota (si tienes acceso):
    ssh usuario@192.168.1.100
    
    Sustituye usuario e ip; ingresa la contraseña si se pide.
  3. Ejecuta un comando remoto:
    ssh usuario@192.168.1.100 "ls -l"
    
  4. Crea un script para ssh:
    nano remoto.sh
    #!/bin/bash
    ssh usuario@192.168.1.100 "echo 'Conectado' > /tmp/remoto.log"
    chmod +x remoto.sh
    ./remoto.sh
    
    Verifica /tmp/remoto.log en la máquina remota.
  5. Usa una clave para autenticación (opcional):
    ssh-keygen -t rsa
    ssh-copy-id usuario@192.168.1.100
    ssh usuario@192.168.1.100
    

Dato curioso

ssh encripta datos, protegiendo conexiones desde 1995. 😄

6.2. Obteniendo datos con curl: Explora la web 📜

Teoría:

curl descarga contenido de URLs o APIs. Opciones como -o guardan archivos o -s silencian salida. Técnicamente, es clave para integrar datos externos.

Práctica:

  1. Descarga una página web:
    curl https://example.com > pagina.html
    cat pagina.html
    
  2. Guarda con -o:
    curl -o datos.json https://api.github.com
    cat datos.json
    
  3. Usa -s para silenciar:
    curl -s https://api.github.com > salida.json
    
  4. Crea un script con curl:
    nano api.sh
    #!/bin/bash
    curl -s https://api.github.com/users/octocat > usuario.json
    chmod +x api.sh
    ./api.sh
    cat usuario.json
    
  5. Filtra con grep:
    curl -s https://api.github.com | grep "login"
    

Consejo

Usa -I para ver encabezados HTTP y diagnosticar conexiones. 💡

6.3. Procesando JSON con jq: Datos estructurados ⚙️

Teoría:

jq parsea y filtra JSON desde APIs o archivos. Ejemplo: .nombre accede a un campo. Técnicamente, es esencial para manejar respuestas de APIs.

Práctica:

  1. Instala jq (si no está):
    sudo apt install jq  # En Debian/Ubuntu
    # O brew install jq en macOS
    
  2. Extrae un campo de JSON:
    cat datos.json | jq '.current_user_url'
    
  3. Filtra un array:
    curl -s https://api.github.com/users | jq '.[0].login'
    
  4. Crea un script con jq:
    nano json.sh
    #!/bin/bash
    curl -s https://api.github.com/users/octocat | jq '.login' > nombre.txt
    chmod +x json.sh
    ./json.sh
    cat nombre.txt
    
  5. Combina con condición:
    nano json.sh
    curl -s https://api.github.com/users | jq 'select(.id > 100) | .login' > usuarios.txt
    ./json.sh
    cat usuarios.txt
    

Advertencia

Asegúrate de tener jq instalado; verifica con jq --version. 🛑

6.4. Monitoreo con top y ps: Controla procesos 🏗️

Teoría:

top muestra procesos en tiempo real; ps los lista estáticamente. Opciones como ps aux dan detalles completos. Técnicamente, esto es vital para gestionar sistemas.

Práctica:

  1. Inicia top:
    top
    
    Observa CPU, memoria y procesos; usa q para salir.
  2. Lista procesos con ps:
    ps aux
    
    Muestra todos los procesos del sistema.
  3. Filtra procesos propios:
    ps -u $USER
    
    $USER limita a tu usuario.
  4. Crea un script de monitoreo:
    nano monitor.sh
    #!/bin/bash
    ps -u $USER > procesos.txt
    chmod +x monitor.sh
    ./monitor.sh
    cat procesos.txt
    
  5. Combina con grep:
    ps aux | grep "bash"
    

Consejo

Usa htop (si está instalado) para una interfaz más amigable que top. 💡

6.5. Scripts remotos: Automatiza el mundo 🚀

Teoría:

Combina ssh, curl, y funciones para scripts remotos. Ejemplo: respaldar datos de una API en una máquina remota. Técnicamente, esto integra automatización avanzada.

Práctica:

  1. Crea un script remoto básico:
    nano remoto_api.sh
    #!/bin/bash
    ssh usuario@192.168.1.100 "echo 'Conexión' > /tmp/conexion.log"
    chmod +x remoto_api.sh
    ./remoto_api.sh
    
  2. Añade curl remoto:
    nano remoto_api.sh
    ssh usuario@192.168.1.100 "curl -s https://api.github.com > /tmp/api.log"
    ./remoto_api.sh
    
  3. Procesa con jq:
    nano remoto_api.sh
    ssh usuario@192.168.1.100 "curl -s https://api.github.com | jq '.current_user_url' > /tmp/url.log"
    ./remoto_api.sh
    
  4. Usa una función:
    nano remoto_api.sh
    get_url() {
        ssh usuario@192.168.1.100 "curl -s https://api.github.com | jq '.current_user_url'"
    }
    get_url > /tmp/url_local.log
    ./remoto_api.sh
    cat /tmp/url_local.log
    
  5. Programa con cron (opcional):
    crontab -e
    # Añade: */10 * * * * /ruta/a/remoto_api.sh
    

Consejo

Usa claves SSH para automatizar sin contraseñas en cron. 💡


🛠️ Ejercicios prácticos

  1. SSH:
    • Conecta a una máquina remota y ejecuta ls.
  2. Curl:
    • Descarga un archivo JSON y guárdalo.
  3. Jq:
    • Extrae el nombre de usuario de un JSON con jq.
  4. Monitoreo:
    • Usa ps para listar procesos y filtra con grep.
  5. Desafío:
    • Crea un script que use ssh y curl para guardar datos de una API en remoto.

📝 Evaluación

Cuestionario corto (5 preguntas):

  1. ¿Qué hace el comando ssh?
  2. ¿Cómo usa curl para descargar datos?
  3. ¿Para qué sirve jq con JSON?
  4. ¿Cuál es la diferencia entre top y ps?
  5. ¿Cómo combinas ssh y curl en un script?

Tarea práctica:

  • Crea un script conecta.sh que:
    • Use ssh para ejecutar date en una máquina remota.
    • Use curl para obtener un JSON y guardarlo.
    • Use jq para extraer un campo y guardarlo en resultado.txt.
  • Entrega: Script, resultado.txt, y una nota con los pasos.

🎉 Recursos adicionales

  • Documentación: man ssh, man curl, man jq, man ps.
  • Enlaces:

Tip

Practica ssh con una máquina virtual para simular entornos remotos. 💡


🚀 Siguientes pasos

¡Felicidades por completar el Módulo 6! En el Módulo 7, construirás un asistente experto con todo lo aprendido. ¡Sigue conectando! ✍️