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 в телеграм.
пишу команду боту по шаблону для получения 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