📚 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
ssh
está instalado:Muestra la versión instalada.ssh -V
- Conecta a una máquina remota (si tienes acceso):
Sustituye
ssh usuario@192.168.1.100
usuario
eip
; 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.log
en 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
-s
para 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
$USER
limita 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
curl
remoto: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
ps
para listar procesos y filtra congrep
.
- Usa
- Desafío:
- Crea un script que use
ssh
ycurl
para 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
curl
para descargar datos? - ¿Para qué sirve
jq
con JSON? - ¿Cuál es la diferencia entre
top
yps
? - ¿Cómo combinas
ssh
ycurl
en un script?
Tarea práctica:
- Crea un script
conecta.sh
que:- Use
ssh
para ejecutardate
en una máquina remota. - Use
curl
para obtener un JSON y guardarlo. - Use
jq
para 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! ✍️