Связаться со мной:

DynDns через Telegram

Т.к яндекс сломал api для своих DNS, то для получения ip будем пользоваться телеграмом.
Через BotFather создаем бота. Даем ему команду

/newbot

Затем вводим имя нашего нового бота. Потом вводим username бота, оно должно оканчиваться на bot.
После этого BotFather пришлет нам api токен.
Теперь нам нужно получить chat id. Для этого отправляем нашему боту какое-нибудь сообщение и затем делаем запрос

https://api.telegram.org/bot<api токен>/getUpdates

В ответе находим

..."id":123456789...

Копируем id.
Если ваш провайдер блокирует телеграм, то нужно обзавестись прокси для отправки уведомлений. Теперь у нас есть все чтобы наш бот мог отправлять нам уведомления.
Отправить сообщение из консоли можно запросом вида

curl -x $proxy "https://api.telegram.org/bot${api}/sendMessage?chat_id=${id}&text=${buf}"

Берем наш скрипт из статьи про ЯндексДНС и немного его переделываем. Получаем что-то типа такого.

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
api="сюда вписываем токен"
id="сюда вписываем chat id"
proxy="socks5://login:pass@proxy.ip:port/"

while true; do
ip=`curl -s http://ip.anikin.pw/`
if [ $ip != $buf ]
then
buf=`echo $ip`
curl -x $proxy "https://api.telegram.org/bot${api}/sendMessage?chat_id=${id}&text=${buf}"
fi
sleep 1800; done;

Скрипт смотрит на изменение ip. И если ip изменяется, то отправляет новый ip в телеграм.

Поделиться
Отправить
2019   api   dyndns   telegram
5 комментариев
Дмитрий Силюк

пишу команду боту по шаблону для получения chat id вставив предварительно свой api и ничего не происходит. бот не отвечает. и вообще ни на одно сообщение не отвечает. в чем может быть проблема?

Петр Аникин

Он и не должен отвечать. Читайте внимательнее инструкцию.

Денис Ревин

Я не в курсе как обойти проверку на спам...
Приветствую, прошу для новичков пояснить — из какой консоли нужно писать код?

Денис Ревин

Проверку на спам прошёл.
Вопрос — из какой консоли нужно писать код?

Петр Аникин

Скрипт написан на bash

Денис Ревин

Ага, вижу в статье — скрипт на тачке, на которой меняется адрес. Можно ли этот скрипт использовать в роутере (ZXHN H118N, к примеру)?

Петр Аникин

Если у вас на роутере openwrt или dd-wrt, то думаю можно.

Денис Терещенко

Уже заработал API на Яндекс.Коннекте. Скрипт придётся поменять:

#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
DOMEN=«doma.in» # ваш домен делегированный на яндекс
SUB=sub # сабдомен
TOKEN=«Q234Z62ULKFJLKRRLL8221323ASPRNVKKRWWFHJURZQJJJJJQWJ» # токен
RECID=«79593219» # id записи

чтобы определить RECID делаем запрос ниже

#curl -H «PddToken: $TOKEN» «https://pddimp.yandex.ru/api2/admin/dns/list?domain

IP=`curl -s http://ip.anikin.pw/`
YAIP=`host $SUB.$DOMEN dns1.yandex.ru | grep has | awk ’{print $4}’`

if [ „$IP“ != „$YAIP“ ]
then
curl -H „PddToken: $TOKEN“ -d „domain=$DOMEN&record_id=$RECID&subdomain=$SUB
fi

Популярное