Rose debug info
---------------

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 комментариев
Дмитрий Силюк 2019

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

Петр Аникин 2019

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

Денис Ревин 2019

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

Денис Ревин 2019

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

Петр Аникин 2019

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

Денис Ревин 2019

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

Петр Аникин 2019

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

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

Уже заработал 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