Comandos Debian: Referencia Avanzada (RSA Ref.2)

La ruta del SysAdmin 15 de jul. de 2025

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

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux