Script para recopilar info en Linux y enviar por Telegram

El siguiente script está desarrollado en bash y nos permitirá obtener información muy valiosa de nuestro sistema. Además, de conocer temas como hostname, sistema operativo, memoria, CPU… realizará un test de velocidad y también podremos obtener nuestra IP pública.

Para que el script funcione correctamente será necesario instalar primero speedtest-cli:

sudo apt install speedtest-cli

Creamos el script en el directorio que queramos:

nano /home/alozanox/scripts/info-system.sh

Pegamos el siguiente código y modificamos el token y chat id por el de nuestro bot en Telegram:

#!/bin/bash

# Función para obtener información del sistema
get_system_info() {
    echo "***** Información del Sistema *****"
    echo "Hostname: $(hostname)"
    echo "Sistema Operativo: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
    echo "Kernel: $(uname -r)"
    echo "Arquitectura: $(uname -m)"
    echo "Memoria Total: $(free -h | awk '/^Mem:/ {print $2}')"
    echo "Uso de CPU: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')"
    echo "Uso de Disco:"
    df -h
}

# Función para obtener la dirección IP pública
get_public_ip() {
    echo "***** Dirección IP Pública *****"
    curl -s ifconfig.me
}

# Función para realizar un test de velocidad de la conexión a Internet
speed_test() {
    echo "***** Test de Velocidad de Internet *****"
    speedtest-cli
}

# Función para obtener usuarios logados a través de SSH
get_ssh_users() {
    local ssh_users=$(who | grep "pts")
    if [ -n "$ssh_users" ]; then
        echo "***** Usuarios Logados por SSH *****"
        echo "$ssh_users"
    else
        echo "No hay usuarios logados por SSH."
    fi
}

# Función para obtener usuarios logados localmente
get_local_users() {
    local local_users=$(who | grep -v "pts")
    if [ -n "$local_users" ]; then
        echo "***** Usuarios Logados Localmente *****"
        echo "$local_users"
    else
        echo "No hay usuarios logados localmente."
    fi
}

# Función para enviar el mensaje a Telegram
send_message() {
    local message="$1"
    local telegram_token="<TOKEN>"
    local chat_id="<CHAT_ID>"
    curl -s -X POST "https://api.telegram.org/bot${telegram_token}/sendMessage" -d "chat_id=${chat_id}" -d "text=${message}" > /dev/null
}

# Obtener información del sistema
system_info=$(get_system_info)

# Obtener dirección IP pública
public_ip=$(get_public_ip)

# Realizar test de velocidad de Internet
speed_test_result=$(speed_test)

# Obtener usuarios logados por SSH
ssh_users_info=$(get_ssh_users)

# Obtener usuarios logados localmente
local_users_info=$(get_local_users)

# Construir el mensaje
message="$system_info\n\n$public_ip\n\n$speed_test_result\n\n$ssh_users_info\n\n$local_users_info"

# Enviar mensaje a Telegram
send_message "$message"

Le damos permisos de ejecución al script:

chmod +x info-system.sh

Lo ejecutamos:

 ./info-system.sh

Y recibiremos en nuestro chat de Telegram toda la info:

NOTA: La versión del script que he añadido al post es sin emojis porque por algún motivo no le gustaba a WordPress en la sección de código de la entrada. Podéis añadirlos vosotros manualmente.

Scroll al inicio
WordPress Appliance - Powered by TurnKey Linux