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
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

WordPress Appliance - Powered by TurnKey Linux