📚 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:
- Verifica si
sshestá instalado:Muestra la versión instalada.ssh -V - Conecta a una máquina remota (si tienes acceso):
Sustituye
ssh usuario@192.168.1.100usuarioeip; ingresa la contraseña si se pide. - Ejecuta un comando remoto:
ssh usuario@192.168.1.100 "ls -l" - Crea un script para
ssh:Verificanano remoto.sh #!/bin/bash ssh usuario@192.168.1.100 "echo 'Conectado' > /tmp/remoto.log" chmod +x remoto.sh ./remoto.sh/tmp/remoto.logen la máquina remota. - 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:
- Descarga una página web:
curl https://example.com > pagina.html cat pagina.html - Guarda con
-o:curl -o datos.json https://api.github.com cat datos.json - Usa
-spara silenciar:curl -s https://api.github.com > salida.json - 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 - 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:
- Instala
jq(si no está):sudo apt install jq # En Debian/Ubuntu # O brew install jq en macOS - Extrae un campo de JSON:
cat datos.json | jq '.current_user_url' - Filtra un array:
curl -s https://api.github.com/users | jq '.[0].login' - 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 - 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:
- Inicia
top:Observa CPU, memoria y procesos; usa q para salir.top - Lista procesos con
ps:Muestra todos los procesos del sistema.ps aux - Filtra procesos propios:
ps -u $USER$USERlimita a tu usuario. - Crea un script de monitoreo:
nano monitor.sh #!/bin/bash ps -u $USER > procesos.txt chmod +x monitor.sh ./monitor.sh cat procesos.txt - 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:
- 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 - Añade
curlremoto:nano remoto_api.sh ssh usuario@192.168.1.100 "curl -s https://api.github.com > /tmp/api.log" ./remoto_api.sh - 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 - 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 - 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¶
- SSH:
- Conecta a una máquina remota y ejecuta
ls.
- Conecta a una máquina remota y ejecuta
- Curl:
- Descarga un archivo JSON y guárdalo.
- Jq:
- Extrae el nombre de usuario de un JSON con
jq.
- Extrae el nombre de usuario de un JSON con
- Monitoreo:
- Usa
pspara listar procesos y filtra congrep.
- Usa
- Desafío:
- Crea un script que use
sshycurlpara guardar datos de una API en remoto.
- Crea un script que use
📝 Evaluación¶
Cuestionario corto (5 preguntas):
- ¿Qué hace el comando
ssh? - ¿Cómo usa
curlpara descargar datos? - ¿Para qué sirve
jqcon JSON? - ¿Cuál es la diferencia entre
topyps? - ¿Cómo combinas
sshycurlen un script?
Tarea práctica:
- Crea un script
conecta.shque:- Use
sshpara ejecutardateen una máquina remota. - Use
curlpara obtener un JSON y guardarlo. - Use
jqpara extraer un campo y guardarlo enresultado.txt.
- Use
- Entrega: Script,
resultado.txt, y una nota con los pasos.
🎉 Recursos adicionales¶
- Documentación:
man ssh,man curl,man jq,man ps. - Enlaces:
- Guía de
ssh(detalles técnicos). - Tutorial de
jq(ejemplos prácticos).
- Guía de
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! ✍️