Найти в Дзене
ITшник Миша

IP адрес сервера на Linux в Telegram

Как-то раз захотелось сделать себе уведомление в свой ТГ канал куда валятся репорты от серверов. Очень может быть удобно, когда ты привёз клиентам железяку, включил её, она тебе в ТГ свою Ipшку написала. Все написано под Rosa Linux. Но по сути работать будет почти везде. nano /home/miha/send_ip.sh #!/bin/bash
# === ПОЛУЧАЕМ ЛОКАЛЬНЫЕ IP-АДРЕСА ===
IP_LIST=$(hostname -I)
# Начинаем формировать сообщение
TEXT="📡 **Мои IP-адреса:**%0A%0A"
TEXT="${TEXT}🔹 **Локальные адреса:**%0A"
# Добавляем каждый локальный IP с новой строки
for ip in $IP_LIST; do
TEXT="${TEXT} • $ip%0A"
done
# === ПОЛУЧАЕМ ВНЕШНИЙ IP-АДРЕС ===
# Пробуем несколько сервисов по очереди
EXTERNAL_IP=$(curl -s --max-time 5 ifconfig.me 2>/dev/null)
if [ -z "$EXTERNAL_IP" ]; then
EXTERNAL_IP=$(curl -s --max-time 5 icanhazip.com 2>/dev/null)
fi
if [ -z "$EXTERNAL_IP" ]; then
EXTERNAL_IP=$(curl -s --max-time 5 ipinfo.io/ip 2>/dev/null)
fi
# Добавляем внешний IP в сообщение
if [ -n "$EXTERNAL_IP" ]; then
Оглавление

Как-то раз захотелось сделать себе уведомление в свой ТГ канал куда валятся репорты от серверов.

Очень может быть удобно, когда ты привёз клиентам железяку, включил её, она тебе в ТГ свою Ipшку написала.

Все написано под Rosa Linux. Но по сути работать будет почти везде.

Как будет выглядеть уведомление
Как будет выглядеть уведомление

Шаг 1. Создайте файл скрипта

nano /home/miha/send_ip.sh

Шаг 2. Скопируйте содержимое

#!/bin/bash

# === ПОЛУЧАЕМ ЛОКАЛЬНЫЕ IP-АДРЕСА ===
IP_LIST=$(hostname -I)

# Начинаем формировать сообщение
TEXT="📡 **Мои IP-адреса:**%0A%0A"
TEXT="${TEXT}🔹 **Локальные адреса:**%0A"

# Добавляем каждый локальный IP с новой строки
for ip in $IP_LIST; do
TEXT="${TEXT} • $ip%0A"
done

# === ПОЛУЧАЕМ ВНЕШНИЙ IP-АДРЕС ===
# Пробуем несколько сервисов по очереди
EXTERNAL_IP=$(curl -s --max-time 5 ifconfig.me 2>/dev/null)

if [ -z "$EXTERNAL_IP" ]; then
EXTERNAL_IP=$(curl -s --max-time 5 icanhazip.com 2>/dev/null)
fi

if [ -z "$EXTERNAL_IP" ]; then
EXTERNAL_IP=$(curl -s --max-time 5 ipinfo.io/ip 2>/dev/null)
fi

# Добавляем внешний IP в сообщение
if [ -n "$EXTERNAL_IP" ]; then
TEXT="${TEXT}%0A🌐 **Внешний IP:**%0A"
TEXT="${TEXT} • $EXTERNAL_IP%0A"
else
TEXT="${TEXT}%0A❌ Не удалось получить внешний IP%0A"
fi

# URL-кодирование (заменяем пробелы)
TEXT=$(echo "$TEXT" | sed 's/ /%20/g')

# Отправляем сообщение
curl -s "https://api.telegram.org/bot********************/sendMessage?chat_id=***************&text=$TEXT"

echo "Готово! Сообщение отправлено."

Шаг 3. Сделайте скрипт исполняемым

chmod +x /home/miha/send_ip.sh

Шаг 4. Проверьте работу скрипта вручную

/home/miha/send_ip.sh

Должно прийти сообщение в Telegram.

Настройка автоматического запуска

1. Создайте сервисный файл

sudo nano /etc/systemd/system/send-ip.service

[Unit]
Description=Send IP addresses to Telegram
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
User=miha
ExecStart=/home/miha/send_ip.sh
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

2. Создайте файл таймера

sudo nano /etc/systemd/system/send-ip.timer

[Unit]
Description=Timer for sending IP to Telegram after boot
Requires=send-ip.service

[Timer]
OnBootSec=3min
Unit=send-ip.service

[Install]
WantedBy=timers.target

3. Активируйте таймер

# Перечитываем конфигурацию
sudo systemctl daemon-reload

# Проверяем файлы на ошибки
sudo systemd-analyze verify /etc/systemd/system/send-ip.service
sudo systemd-analyze verify /etc/systemd/system/send-ip.timer

# Включаем и запускаем таймер

sudo systemctl enable send-ip.timer
sudo systemctl start send-ip.timer