Яндекс DNS API — для домашнего сервера

Скрипт для автоматической настройки A записи на DNS сервере при динамическом IP адресе.

Решил перетащить хостинг домой, т.к. ферма «манит» и постоянно включена, заодно ушел от регистратора rucenter. Теперь всего 87 р в год за доменное имя:-)))
Для домена, в DNS сервере обязательно должна быть А запись с реальным IP.

Проблем в том, что IP у меня динамический.
Нашел решение задачи http://www.lissyara.su/?id=2242
Поднял виртуалку с сайтом, но проверку динамического адреса решил делать на хостовой машине, она на Windows 7.

Сохранить скрипт в файл с расширением *.vbs и настроить его выполнение в планировщике.

 

Option Explicit
Const strAddr = «c:\Temp\ipaddr.txt»
Const strLog= «c:\Temp\log.log»
Dim objHTTP, FSO, strHTML, IPnew, colsym, File, IPsave, FLog
Set FSO = CreateObject(«Scripting.FileSystemObject»)
Set objHTTP = CreateObject( «WinHttp.WinHttpRequest.5.1» )
On Error Resume Next
‘отправляем запрос узнать свой ip адрес
objHTTP.Open «GET», «http://ipv4.internet.yandex.net/internet/api/v0/ip», False
objHTTP.Send
if Err.Number0 then
MsgBox Err.Number &chr(13)+Err.Description
Set FLog = FSO.OpenTextFile(strLog, 8, True)
Flog.WriteLine «Не удалось узнать IP адрес с ipv4.internet.yandex.net.» & » Error: «&chr(32)&Err.Number&chr(32)&Err.Description
FLog.Close
Wscript.Quit
end if
‘WScript.Echo objHTTP.Status
‘Обрабатываем ответ — Убираем кавычки перед и после полученного ip адреса
colsym = Len(objHTTP.ResponseText)
IPnew = Mid(objHTTP.ResponseText, 1,colsym-1)
colsym=Len(IPnew)
IPnew = Mid(IPnew, colsym-(colsym-2), colsym)
‘WScript.Echo IPnew
‘Файл c:\Temp\ipaddr.txt должен существовать и быть не пустым, считываем значения IP адреса из файла
Set File = FSO.OpenTextFile(strAddr,1)
IPsave = File.ReadLine
File.Close
‘Если значение IP адреса в файле отличается от полученного в результате запроса на http://ipv4.internet.yandex.net/internet/api/v0/ip то записываем новый ip в DNS и в файл
If IPsaveIPnew then
objHTTP.Open «PUT», «https://pddimp.yandex.ru/nsapi/edit_a_record.xml?», False
objHTTP.SetRequestHeader «Content-Type»,»application/x-www-form-urlencoded»
objHTTP.Send «token=de166d3dc4ec3f9d8619e1fcf75ad9d7e8a437a77b&domain=sqladmin.ru&record_id=408141&content=»&IPnew
if Err.Number0 then
MsgBox Err.Number &chr(13)+Err.Description
Set FLog = FSO.OpenTextFile(strLog, 8, True)
Flog.WriteLine «Не удалось записать новый IP адрес в DNS» & » Error: «&chr(32)&Err.Number&chr(32)&Err.Description
FLog.Close
Wscript.Quit
end if
Set File = FSO.OpenTextFile(strAddr, 2)
File.Write IPnew
File.Close
‘WScript.Echo (objHTTP.responseText)
‘else WScript.Echo «IP не изменен»
end if