Usa la Fuerza

BASH proporciona muchas funciones para mejorar tu precisión, velocidad y eficiencia: ¡conócelas y úsalas!

Completado con Tab

Presiona la tecla <TAB> para expandir los primeros caracteres de un nombre de directorio común, nombre de archivo o nombre de variable. Si hay más de una opción posible, completará hasta donde sea posible. Presiona <TAB> nuevamente para ver las posibles opciones de completado.

Variables Estándar

  • ~ - Un alias para el directorio de inicio del usuario actual (también disponible como $HOME)
  • $PATH - La ruta de búsqueda de comandos
  • $? - El valor de salida del comando anterior
  • $PWD - El directorio de trabajo actual

Historial de Comandos

Navega a través de comandos anteriores presionando las flechas arriba y abajo. Usa el comando history para ver una lista del búfer del historial de comandos. (BASH escribe este búfer en ~/.bash_history al salir, sobrescribiendo cualquier contenido existente). Presiona Ctrl-R para buscar en el historial comandos que coincidan con una cadena de búsqueda.

Búsqueda: ¿Dónde Estás?

grep - Imprimir líneas que coinciden con un patrón

$ grep patrón archivo.txt
  • -i - Coincidencia de patrón sin distinguir mayúsculas y minúsculas
  • -v - Imprimir líneas que NO coinciden
  • -c - Contar líneas coincidentes en lugar de imprimirlas
  • -l - Imprimir nombres de archivo que contienen líneas coincidentes
  • -h - No incluir nombres de archivo al buscar en múltiples archivos de entrada (ej. salida*.txt)

Trabajando en Cadena

Linux prefiere funciones y utilidades pequeñas y de propósito único. Encadénalas juntas con la "tubería" (pipe), que envía la salida de un comando al siguiente como entrada.

$ grep patrón archivo.txt | sort | uniq -c

Construye iterativamente una serie de comandos para crear una salida que aborde definitivamente tus requisitos.

Orden en la Corte

sort - Ordenar líneas alfabética o numéricamente

$ sort archivo.txt
  • -n - Ordenar numéricamente (5 antes de 10)
  • -r - Orden inverso
  • -k - Especificar un campo de ordenación alternativo
  • -t - Especificar un delimitador de campo para -k (por defecto es espacio)

Desduplicación y Desduplicación

uniq - Imprimir solo líneas coincidentes consecutivas una vez

$ grep patrón archivo.txt | uniq
  • -c - Imprimir el recuento de líneas consecutivas

¡Recuerda: Solo encuentra líneas coincidentes consecutivas! Más útil con entrada canalizada desde el comando sort.

$ grep patrón archivo.txt | sort | uniq

Redirigir Salida: No Quiero Escucharte

Redirige la salida a un archivo en lugar de a la propia shell con el carácter "mayor que". (Advertencia: Sobrescribe cualquier contenido existente).

$ grep patrón archivo.txt > resultados.txt

Añade a archivos existentes con "doble mayor que".

$ grep patrón archivo.txt >> resultados.txt

# Sin Paquetes, No Hay Fiesta

tcpdump - Volcar tráfico de red

$ sudo tcpdump -n -s 0 -i eth0

'filtros cBPF'

$ tcpdump -n -r entrada.pcap
$ tcpdump -w salida.pcap 'filtros cBPF'
  • -n - Evitar búsquedas DNS en direcciones IP. Usa dos veces para también evitar búsquedas de puerto a servicio
  • -r - Leer desde archivo pcap en lugar de la red
  • -w - Escribir datos de paquetes a un archivo
  • -D - Enumerar interfaces de red
  • -i - Especificar la interfaz de red en la que capturar
  • -s - Número de bytes por paquete a capturar
  • -C - Número de megabytes para guardar en un archivo de captura antes de comenzar un nuevo archivo
  • -G - Número de segundos para guardar en cada archivo de captura (requiere formato de tiempo en el nombre del archivo de salida)
  • -W - Con la opción "-C" o "-G", limita el número de archivos rotados (ver página principal para uso detallado)
  • -X - Mostrar contenido del paquete en hexadecimal

tcpdump requiere privilegios de root para capturar tráfico de red de forma promiscua. Los permisos de nivel de usuario son suficientes para manipular archivos de captura existentes.

Consulta la página principal de pcap-filter para obtener información sobre cómo construir BPFs para controlar el tráfico capturado.

Ir con el (Net)Flujo

nfdump - Procesar datos NetFlow desde archivos en disco

$ nfdump -R ./ -O tstart -o extended
  • -R - Leer datos recursivamente desde el directorio especificado
  • -r - Leer datos desde un único archivo nfcapd
  • -s - Agregar por srcIP, dstIP, puerto, protocolo
  • -A - Especificar agregación personalizada
  • -t - Ventana de tiempo, en formato "YYYY/MM/DD hh:mm:ss" (ver página principal para detalles adicionales)
  • -s - Generar estadísticas "TopN"
  • -O - Especificar orden de salida
  • -o - Especificar formato de salida (line, long, extended, o custom). El formato personalizado usa sintaxis "fmt<cadena_formato>", donde "<cadena_formato>" define los valores mostrados (ver página principal para lista completa)

Campos comunes para formato personalizado:

  • ts - Hora de inicio
  • te - Duración
  • sa - Dirección de origen
  • da - Dirección de destino
  • sp - Puerto de origen
  • dp - Puerto de destino
  • pr - Protocolo
  • pkt - Recuento de paquetes
  • byt - Recuento de bytes
  • bpp - Bytes por paquete

Deletreo de Paquetes Sin Editar

tshark - Volcar y analizar tráfico de red (también conocido como "Wireshark en la shell")

$ tshark -n -r entrada.pcap -Y '<filtro_visualización>'
  • -n - Evitar búsquedas DNS y de puertos
  • -r - Leer desde archivo pcap en lugar de la red
  • -w - Escribir salida a un archivo pcap en lugar de la terminal
  • -T - Formato de salida (text, fields, etc.)
  • -e - Con -T fields; añadir un campo a la salida
  • -Y - Filtro de visualización del protocolo a aplicar
  • -z - Modos de salida estadística - ver página principal para información sobre cómo construir filtros de visualización conscientes del protocolo

Sacar las Armas Grandes

awk - Lenguaje de escaneo y procesamiento de patrones ¡Cosas realmente poderosas™!

$ awk -F ',' '{ print $1,$6,$3 }' entrada.txt
  • -F - Especificar separador de campo de entrada (por defecto es espacio)

Los separadores de campo de entrada y salida se pueden especificar en el propio script awk con las variables FS y OFS:

$ awk 'BEGIN { FS = ","; OFS = "\t" } { print $2,$5,$1 }' entrada.txt

¿Qué Hay en un Nombre?

passivedns - Generar registros normalizados para todas las consultas y respuestas DNS

$ passivedns -r entrada.pcap -l pdns_log.txt -L pdns_mxdomain.txt
  • -r - Especificar archivo pcap a leer
  • -l - Registro para consultas normales (no errores)
  • -L - Registro para consultas con error NXDOMAIN
  • -i - Especificar interfaz para observación DNS en vivo

Para Más Información Sobre Estos Comandos...

Usa el manual de referencia incorporado:

man - Interfaz a los manuales de referencia en línea

$ man find
  • -k - Realizar búsqueda por palabra clave a través de todas las páginas del manual

Usa la ayuda de comandos en línea cuando esté disponible: muchos comandos proporcionan declaraciones de uso breves con las opciones "--help" o "-h".

$ tcpdump --help

El Grymoire - hogar para magos de UNIX:
http://www.grymoire.com/Unix/