ksergio.com

github-logo

  • Shell
  • Linux
Publicado hace 3 semanas

Logear características de tus máquinas

Logear características de tus máquinas

Este script muestra como logear todos los recursos de mis máquinas en un fichero para su posterior tratamiento.

Las máquinas deben ser accesibles mediante ssh, en esta ocasión proporciono las contraseñas sshpass pero podríamos tener nuestras llaves .ssh guardadas y precindir de ellas.

Todas las máquinas remotas son de tipo linux donde tengo instalada la utilidad inxi, pero puedo sustituir este comando por cualquier de la lista que aparece más abajo para prescindir de dependencias adicionales.

Las credenciales se presentan en texto plano de la siguiente forma en un fichero .credenciales

VirtualBoxDebian:debian:debian:localhost:7001
VirtualBoxArch:arch:arch:localhost:7002

Por último aquí esta el script que hace el loggin a un fichero specs.txt

#!/bin/bash

# Vaciar fichero de salida
> specs.txt

# Leer cada línea del fichero de hosts
# Formato:
# Nombre_maquina:usuario:contraseña:ip:puerto_ssh
# ---------------------
# IFS Internal Field Separator
# Entonces IFS=: Separa cada linea usando ':' y asigno directamente a esas variables.
# ---------------------
while IFS=: read -r id user pass host port 
do
    
    echo "Obteniendo info de $user@$host:$port..."
        
    echo -e "\n---------\nMáquina: $id\n" >> specs.txt
    
    # ------------------------------------
    # Pasamos la passwor de forma segura a ssh
    # ssh -o Strict (evita el mensaje de los keyrings)
    # -p Para los puertos "no default" de VirtualBox
    # -n previene leer de la stdin (porque entra en conflicto con el read del bucle, sin esto solo pilla el primero)
    # inxi es la utilidad que uso para sacar los datos
    # -------------------------------------
    sshpass -p "$pass" \
    ssh -o StrictHostKeyChecking=no \
        -p "$port" \
        -n \
        "$user@$host" \
        "true > /dev/null; inxi -Fxz" \
        >> specs.txt
        # Si quiero errores silenciosos, NO se porque alguien querría eso, puedo redireccionar la salida de errores
        # 2>/dev/null
    
    # --------------------------------------
    # Podemos usar diferentes comandos para logear info:
    #
    # inxi -Fxz             # Información completa del sistema y hardware: CPU, RAM, discos, red, kernel
    # sudo lshw -short      # Lista resumida de hardware (CPU, memoria, placas, dispositivos)
    # lsblk -f              # Muestra discos, particiones y sistemas de archivos
    # lscpu                 # Información detallada de la CPU
    # lsusb                 # Lista dispositivos USB conectados
    # lspci                 # Lista dispositivos PCI conectados (GPU, tarjetas de red, etc.)
    # sudo dmidecode -t system -t bios  # Información del sistema y BIOS/firmware
    # free -h               # Estado de la memoria: total, usada, libre
    # uname -a              # Información general del kernel, hostname, arquitectura, versión
    # uname -r              # Versión del kernel
    # uname -m              # Arquitectura de la CPU (x86_64, i686, etc.)
    # uptime                # Tiempo que lleva encendido el sistema y carga promedio
    # dmesg | tail -n 20    # Últimos 20 mensajes del kernel (opcional)
    # ip addr               # Muestra las IPs de todas las interfaces de red
    # ip route              # Muestra la tabla de rutas y puerta de enlace
    # ss -tulnp             # Lista puertos abiertos y servicios escuchando
    # netstat -tulnp        # Alternativa clásica para ver puertos abiertos
    # ping -c 1 8.8.8.8     # Test de conectividad a Internet (1 paquete)
    # nmcli device status   # Estado de las interfaces de red (si NetworkManager instalado)
    #
    # --------------------------------------

done < .credenciales