Comandos Debian: Referencia Avanzada (RSA Ref.2)
Esta chuleta está centrada en tres áreas clave:
- Administración remota
- Contenedores (Docker y Podman)
- Automatización del sistema
Está organizada por tema y pensada para uso diario, auditoría, despliegues y control de sistemas remotos.
Administración remota por SSH y sistemas distribuidos
Conexión y ejecución remota:
ssh usuario@host # Conexión remota
ssh -p 2222 usuario@host # Puerto personalizado
ssh usuario@host "uptime" # Ejecutar comando remoto
Copiar archivos entre hosts:
scp archivo.txt usuario@host:/destino/
rsync -avz /local/ usuario@host:/remoto/
rsync -e ssh -av /origen/ host:/destino/ # Canal SSH explícito
Transferencia de clave pública (sin contraseña):
ssh-keygen # Genera clave
ssh-copy-id usuario@host # La copia al host remoto
Comandos remotos encadenados:
ssh usuario@host "cd /proyecto && git pull && ./deploy.sh"
Multiples hosts con Parallel SSH:
pssh -h hosts.txt -l root -i "hostname && df -h"
Administración de contenedores (Docker, Podman)
Docker: gestión básica:
docker ps -a # Contenedores activos y detenidos
docker run -d -p 8080:80 nginx # Ejecución desatendida
docker exec -it contenedor bash # Shell dentro del contenedor
docker cp contenedor:/archivo ./ # Copiar archivos desde contenedor
Docker: gestión avanzada:
docker inspect nginx | jq . # Salida estructurada
docker stats # Monitorización por contenedor
docker system prune -a # Elimina todo lo no usado
docker update --restart=always nombre # Política de reinicio
Podman (sin demonio):
podman run -it alpine sh # Contenedor sin root
podman ps -a # Estado
podman images # Imágenes disponibles
Podman + systemd: contenedor como servicio:
podman generate systemd --name web --files --restart-policy=always
cp container-web.service ~/.config/systemd/user/
systemctl --user enable --now container-web.service
Automatización con cron, systemd-timer y scripts
Cron (usuario):
crontab -e # Editar tareas
crontab -l # Listar
Ejemplo de tarea:
30 2 * * * /usr/local/bin/respaldo.sh
Systemd timer personalizado:
Archivo mi-tarea.service
:
[Unit]
Description=Tarea automatizada
[Service]
Type=oneshot
ExecStart=/usr/local/bin/respaldo.sh
Archivo mi-tarea.timer
:
[Unit]
Description=Ejecutar cada 15 minutos
[Timer]
OnBootSec=10min
OnUnitActiveSec=15min
Unit=mi-tarea.service
[Install]
WantedBy=timers.target
Activación:
systemctl daemon-reload
systemctl enable --now mi-tarea.timer
systemctl list-timers
Scripts autoauditados: ejemplo:
#!/bin/bash
LOG=/var/log/auditoria_$(date +%F).log
echo "[Inicio $(date)]" >> "$LOG"
uptime >> "$LOG"
df -h >> "$LOG"
ps -eo pid,%cpu,%mem,cmd --sort=-%cpu | head -10 >> "$LOG"
echo "[Fin $(date)]" >> "$LOG"
inotify: ejecutar al cambiar archivo:
inotifywait -m /etc/nginx/nginx.conf -e modify |
while read; do systemctl restart nginx; done
Comando at (una sola vez):
echo "/usr/local/bin/mensaje.sh" | at now + 10 minutes
Automatización con Ansible
Información del sistema
ansible --version # Ver versión instalada
ansible-config list # Mostrar configuración activa
ansible-doc -l # Listar módulos disponibles
ansible-doc <modulo> # Ver ayuda de un módulo
Inventario y conectividad
ansible all -m ping # Probar conexión SSH
ansible -i hosts.ini grupo -m ping # Usar inventario personalizado
ansible-inventory --list -y # Mostrar inventario estructurado
Comandos ad-hoc (acciones rápidas)
ansible all -m shell -a "uptime" # Ejecutar comando remoto
ansible web -m copy -a "src=local.txt dest=/tmp/" # Copiar archivo
ansible db -m apt -a "name=htop state=present" # Instalar paquete
ansible all -m reboot # Reiniciar remotos
Ejecución de playbooks
ansible-playbook despliegue.yml # Ejecutar playbook
ansible-playbook -i hosts.ini servicio.yml # Inventario personalizado
ansible-playbook -l web main.yml # Filtrar grupo de hosts
ansible-playbook --check mantenimiento.yml # Modo simulación (dry run)
Gestión de claves y secretos
ansible-vault create credenciales.yml # Crear archivo cifrado
ansible-vault edit credenciales.yml # Editar
ansible-playbook --ask-vault-pass secreto.yml # Ejecutar playbook cifrado
Utilidades y depuración
ansible all -m setup # Recopilar facts
ansible web -m debug -a "msg='Deploy OK'" # Mensaje de prueba
ansible-playbook -v script.yml # Modo verboso
ansible-playbook --start-at-task="Instalar Apache" archivo.yml