Сервіс WHOIS моніторингу доменів. Чому цей сервіс безкоштовний? Модуль python-whois для моніторингу оплати доменів

Response Time Monitoring

Response time monitoring Response time monitoring is testing how fast is your site.

Response time monitoring is testing how fast is your site. Це може бути accessible, але погана функція може бути виконана безперешкодно для клієнтів. Monitoring of the response time allows you to check how the site acts as the time goes on. Do any of the scheduled tasks, як backup, updates etc affect the performance? Does the site works well for the whole world, or some regions of interest could meet a confusing delay?

Global monitoring system is quite useful -
as most of my outages є реально регіональних outages out of my control. Це helps to know this.

"

2017-02-01

Ще рік, мільйони домашніх Names є меншими. What happens after domain expires?How long will your domain wait for you before someone grabs it? And how to omit this?

Monitor your domains for any changes. Ви можете помітити eye on the state of available domains which you like, but don't forget your own ones too. Існує велика кількість послуг, як HostTracker, який забезпечує надійний, ефективний спосіб перейти до будь-яких змін додому.

Domains: do they have afterlife?

Більше того, що ми можемо повідомити про проблему, що стримує домашній ім'я. Ще рік, мільйони домашніх Names є меншими. Більшість, це безпосередньо unintentionally, власники пом'якшити нову нотатки для різних умов і вони не можуть вийти з того, що вони є в процесі звільнення їх придбаний домашній until it to to late! У цій статті ви будете знати про найбільш популярні відомості про домашні вираження. Більше того, ми будемо думати, що великі компанії, так само як Microsoft, Foursquare, Yatra, є також усунення до "зламаної гри". Додатково, ви повинні виконати, як потрапити в домашній ім'я, і ​​якщо ви збираєтеся заплатити за домашню оренду. How long will your domain wait for you before someone grabs it? And how to omit this using HostTracker's функцій?

How Microsoft hotmail.co.uk

Один з найбільш striking examples of dropping domain name ocured in 2003 due to what is called the collective negligence. У положенні факту, що люди були випробування на схильність до того, що було зроблено і деякий час до ділу з проблемою, Microsoft був як типова bureaucratic organization. Це турбується blind eye to people inquiries. Despite being warned that it’s time for the domain renewal, Microsoft overlooked ці notifications. Там, вдома, було повернено в територію наявних домівок. Moreover, його mail service wasn’t accessible in England.

Luckily, domain був схоплений at once. The new owner was so kind that tried to information Microsoft immediately that they needed to re-register the domain and restore the service. Неймовірно, Microsoft не бачить, щоб отримати свій веб-сайт і не зважати на ці повідомлення. Microsoft здійснив іссуе just when journalists contacted it. Тільки там, software giant reached новий власник їхнього будинку. What is more, even after that, during along period time Microsoft had been stalling for time before the problema was sorted out. Вона бачить, що не один в Великобританії може ділитися з проблемою, тому що тільки центральна служба була відповідальна для домашніх заощаджень.

Fortunately, hotmail.co.uk was regained. But still, Microsoft didn’t officially confirm що hotmail.co.uk had been dropped.

Лише зареєструвати для всіх .uk домашніх shed light на цьому об'єкті і born out that hotmail.co.uk мав failed до того, щоб renewed despite був warned o importance of renewal procedure. Більше того, реєстратор затверджений, що вдома був сприйнятий як приватна людина. Очевидно, всі notifications via mail були ignored by the giant. It’s interesting that it wasn’t the very first time when something like that has happened with this company. У 1999, Microsoft мав подібну bad experience.

What happens after domain expires?

Політика depends on registrar of domain names. У додатку, цей порядок має змінювані багато разів напередодні історії. У цій статті ми повинні бути зроблені з найбільшою типовою up-to-date procedure.

Перший період - записати покази оцінки до клієнта і позичальника впродовж часу для домашнього розвідки (тривалий період). Ваша черга період періоду може пройти з одного до 2-3 сек. Це window може мати кілька розрахунків - для прикладу, безкоштовний період update, an additional fee etc. Якщо вдома є в строковому періоді, де всі послуги є shut off, вона є доступною для реєстрації за будь-якого місця.

Second stage - auction. Після registrar is sure that the domain renewal hasn’t been done, він puts it up for auction. Це означає, що registration's chance to bring in extra income- the domain can be auctioned off to the highest bidder.

  • Go Daddy Auctions
  • NameJet
  • SnapNames.com

Всі отримають правоохоронці з однією однією з цих служб. Domain names є exclusive до одного auction, as the sell-off can't take place at 2 locations. How does the auction work?

Щоб з'явитися, є можливим можливість доступу до backorder. Для прикладу, якщо деякий є дуже зацікавлений в блискавці свого домашнього імені. У цьому випадку, покупець буде отримати інформацію про випадок статуї target domain and, definitely, leverage this opportunity. It's worth noting that during this period, domains може бути включений в backorder auctions, де інший учасник може bid on your domain name. Взагалі, аукціон може бути з'єднаний з several stages, як добре, як після головної аукціон може бути пов'язаний з довколишніми домашніми назвами.

У додатку до цього, там є такі місця, які збирають інформацію і забезпечують її в більш зручній мірі. Для останнього, ці веб-сайти будуть help you to discover, що більше ніж 3 мільйони домашніх дітей мають expired для останніх 10 днів. Більш того, ви будете робити те, що аж expensive (згоряння вгору до $ 500K) будинки можуть бути кинуті після того, як.

Трійший період - domain "death". Удома невідомо, і він може бути скинуто на один основу. Unfortunately, it's unlikely if a domain name ha any marginal value, as well as, consists of unambiguous words і is well-promoted. Якщо ви, домашній буде ймовірно, витрачається, як nowadays it is also kind of business.

Деякі extra good examples

У 2010, добре відомий веб-сайт Foursquare forgot to renew їхній домашній ім'я. Досить, вони помітили це в часі і стрімко запропонували питання. Неймовірні, customers couldn’t reach the site за цей період часу. При тому, що інтернет був bombarded з цими новинами, тому, що компанія має таку віддачу від цього питання.

However, sad examples do exist too. У 2012, популярний Indian travel site Yatra.com, з мільйонами відвідувачів і величезний притулок, потрапив їх домашній. Тампоки вони не лишаються не тільки гроші, але й їх reputation, clients і trust of partners. Eventually, вдома він бувзав'язаний. The company hasn’t been as successful since.
Такий спільний досвід має багато майже одну одну в той час, коли в їхній історії, з банків до великих компаній. Насправді, HostTracker мав такий досвід роботи і він був у відповідь, коли ми вирішили отримати цей матеріал.

Web site monitoring service almost lost its domain

truth is that сайт був майже втрата часу, маючи інструмент для зберігання eye для expiration date and sending renewal alerts. Насправді, цей характер стає HostTracker's останній готель, як усі домашні і магазини, які будуть monitored в HostTracker's own monitoring system. У рядку розмовляти, навіть якщо в часі HostTracker компанія повертається до релевантних повідомлень, всі, хто посідає, щоб зробити, як auto-renewal був на. However, для деякої reason, the автоматичні платежі didn’t pass through and the domain wasn’t renewed. Для того, щоб бути щасливим, ми не можемо не поміркувати, хто думає, що хлопець, як їхня підтримка не може випливати з вас. Досить, ми невідповідно про проблему в часі і розв'язали його.

  • Renew your domain in advance. У цьому випадку ви можете подумати про те, що ви зареєструєтеся до набору вашого дому до автоматичного відновлення в приміщенні з вашим approval beforehand. Більше того, ви будете застережені в разі будь-яких проблем.
  • Backorder does work. Більше ніж HostTracker встановив свій термін терміну, один з них був класу, щоб contact HostTracker електронною поштою для отримання доменного імені. So pay attention to such things!
  • Ви не повинні вступити до строку закінчення. Після домашнього виходу, він може бути легко відновлений в регулярних цінах з днем ​​днів і HostTracker показав цей. Розбіжності є, що всі клієнти будуть заборонені з повідомленням, що домашня сторінка недоступна. Ви повинні знати, що додому до expire because working on recovering it can take a vast amount of time.
  • Monitor your domains for any changes. Ви можете помітити eye on the state of available domains which you like, but don't forget your own ones too. Існує велика кількість послуг, як HostTracker, який забезпечує надійний, ефективний спосіб перейти до будь-яких змін додому. Виберіть з опису таких HostTracker's інструменти, що знаходяться в нашому blog.
more blog

Забули продовжити домен і втратилийого? Сплатили продовження, але домен не продовжився і був перехоплений?
У вас багато доменів і вам важко стежити за продовженням?

Наш whois моніторинг дозволяє практично повністю вирішити ці проблеми.

Працює для БУДЬ-ЯКИХ доменів, а не тільки для тих, що реєструвалися у нас!
Безкоштовно!


Відмінною (і дуже приємною) особливістю нашого сервісу, в порівнянні з різними органайзерами та "нагадниками" є те, що вам не потрібно нічого налаштовувати, не потрібно вказувати дати закінчення доменів і взагалі не потрібно ні про що турбуватися - просто додайте список ваших доменів і сервіс все зробить за вас.

Моніторинг відстежує дату закінчення ваших доменів з WHOIS і повідомляє вас на email, а так само в ICQ або Jabber, якщо whois домену говорить про те, що його необхідно продовжити.

Найближчим часом буде додано також повідомлення на SMS.

Ви можете поставити на моніторинг будь-які ваші домени, де б ви їх не реєстрували.
Сервіс абсолютно безкоштовний.
Отримайте спокій і впевненість у завтрашньому дні прямо зараз.


Це безкоштовно! Для всіх!



Вам сподобалось? Поділіться з друзями /

Питання та відповіді:

Коли і як йдуть повідомлення?

    Повідомлення про швидке закінчення доменів надсилаються: за 45 діб, до закінчення; за 30 діб; за 15, 10 та 5 діб до закінчення домену, по одному разу на добу. З моменту, коли до закінчення домену залишається 5 діб – повідомлення йдуть щодобово. Після того, як домен закінчився - протягом місяця повідомлення можуть бути відправлені ще кілька разів, після чого його моніторинг та повідомлення припиняється. Щоб активувати моніторинг такого домену, його необхідно додати до системи заново.

Ви гарантуєте, що всі повідомлення будуть отримані?

    Ми не даємо жодних гарантій. Але повідомлення зазвичай надходять.

Чому цей сервіс безкоштовний?

    Серед наших доменів: webxl.ru, webxl.name, webxl.info, webxl.biz, servers.webxl.ru та інші. А ще у нас дуже багато пошти, адже повідомлення від реєстраторів надходять саме на пошту. І автопродовження працює не завжди – іноді, може несподівано не вистачити коштів на балансі, статися якийсь збій тощо. Було б дуже прикро, втратити домен вартістю $$$$ через збій. Тому ми створили цей сервіс. Ми не прагнемо отримати від нього вигоду, але з популярністю сервісу зростає і наша популярність, тому, якщо ви хочете віддячити нам - розкажіть про наш сервіс своїм знайомим та друзям.

Стаття дослідження на тему перевірки та моніторингу даних з whois сервісів. Завдання моніторингу часу делегування домену насправді виявилося не таким простим, як може здатися. Нижче я докладно розповім про всі нюанси моніторингу часу оплати домену за допомогою zabbix.

Ця стаття була спочатку написана кілька років тому. Загалом, вона відповідала на запитання щодо моніторингу за делегуванням доменів, але згодом до неї почало з'являтися все більше питань. Зокрема, з'являлися нові доменні зони, інформацію щодо яких не виходило дістати обраним методом. До речі, у початковій версії статті використовувалася лише одна перевірка за допомогою ruby.

Чим більше доменів я ставив на моніторинг, тим частіше стикався з тим, що в якихось зонах не міг отримати інфу. Зі свіжих прикладів - .pro, .fm, .io. Напевно, були й інші, але я стикався з проблемами саме в цих зонах. Вирішив розібратися із цим питанням детальніше.

На мій подив, виявилося, що простого, зрозумілого та надійного рішення щодо отримання інформації про час делегування домену просто не існує. Дуже докладно розібрано цю тему у статті на хабрі. Прочитавши та усвідомивши все, що в ній написано, я зрозумів, що реалізувати просту потребу в моніторингу доменів малою кров'ю не вийде.

Нижче я опишу кілька консольних способів отримання інформації про час оплати домену для передачі цієї інформації в zabbix:

  • Ruby gem Whois.
  • Консольна утиліта linux- whois, jwhois.
  • Пітонівський модуль - python-whois.
  • Whois client для node.js.

Перший спосіб був описаний давно, тому він за змістом трохи вибивається із загальної розповіді. Мені не захотілося редагувати всю статтю. Я тільки додав на початок опису проблеми та інші способи отримання інформації в кінці. Сама реалізація з боку zabbix залишилася тією самою. Змінюються лише скрипти, які передають у zabbix дані про терміни делегування домену.

Для зручного вибору потрібного способу склав табличку, де вказав, який із способів які домени підтримує. Використовував лише ті домени, які мені потрібні. Стандартні домени.ru та.com підтримують всі описані способи.

спосіб/доменproiofm
ruby+ + +
whois +
python+ +
nodejs+ +

Якщо у вас ще немає свого сервера для моніторингу, рекомендую матеріали на цю тему. Для тих, хто віддає перевагу системі CentOS:

Те ж саме на Debian 9, якщо віддаєте перевагу його:

Підготовка до моніторингу за доменами

Для моніторингу за терміном делегування доменів ми будемо використовувати скрипт мовою програмування Ruby. Щоб скрипт працював, потрібно встановити Ruby на сервер. Якщо ви використовуєте, як я, сервер на базі CentOS 7, то можете скористатися моєю . Там саме йдеться про встановлення необхідного гему whois-parserдля моніторингу терміну делегування домену

Парсинг часу делегування домену через ruby

Якщо у вас налаштований та готовий до роботи zabbix та встановлений ruby, приступаємо до налаштування скриптів. Ідемо до папки /etc/zabbix/scriptsі створюємо там скрипт:

# mcedit /etc/zabbix/scripts/domain_left.rb #!/usr/bin/env ruby ​​require "whois-parser" record = Whois.whois(ARGV) parser = record.parser expire = parser.expires_on.strftime("% Y-%m-%d") today = Time.now.strftime("%Y-%m-%d") expire_date = DateTime.parse(expire) today_date = DateTime.parse(today) left = (expire_date - today_date ).to_i puts left

Його відразу можна перевірити. Зберігаєте скрипт і запускаєте в командному рядку, вказуючи через пробіл ім'я домену для перевірки:

# /etc/zabbix/scripts/domain_left.rb сайт 394

Добре, на виході просто число, яке дуже комфортно передати в zabbix. Цей скриптя написав не сам, а підглянув автор цієї статті. Він має великий мінус. У скрипті використовується whois-parser та його функція expires_on. Зроблено це спрощення створення скрипта. Не довелося вручну парсити висновок, за нас це зробили автори гему whois-parser. Але ці функції працюють не з усіма доменами. У різних зонах висновок може бути різним. Покажу на прикладі.

Для цього створимо простий скрипт на ruby, який просто виводитиме інформацію whois без парсингу, в сирому вигляді.

#!/usr/bin/env ruby ​​require "whois-parser" domain = ARGV whois = Whois::Client.new r = whois.lookup(domain) puts r

Зберігаємо скрипт і перевіримо за його допомогою 2 домени: із зони.pro та зони.ru.

# ./domain.rb server.pro # ./domain.rb сайт

Якщо ви уважно подивіться на висновок, виявите, що в першому випадку рядок з інформацією про термін оплати домену виглядає так:

Registry Expiry Date: 2019-08-18T00:00:00Z

а в іншому ось так:

Paid-till: 2019-08-09T11:01:06Z

Whois-parser вміє обробляти лише перший рядок, другий він не розуміє, тому наведений вище скрипт видасть помилку. Але в цілому, бібліотека ruby ​​whois з моїх дослідів коректно обробляє найбільше доменів. Потрібно лише правильно розпарсувати висновок. Я програмувати на ruby ​​не вмію, розумітися на мене не було часу, тому я залишив це рішення як є. Можна, звичайно, виводити в текстовий файла потім парсить висновок через bash. Це я вмію, але не захотілося мостити таким чином. Та й загалом, мені не подобається цей спосіб тим, що треба ставити ruby ​​та регулярно оновлювати його бібліотеку. Тільки це гарантує підтримку нових зон та всіх змін по старих.

Загалом і в цілому спосіб з наведеним скриптом на ruby ​​працює не гірше за решту способів, а якщо нормально розпарсувати висновки по всіх потрібних зонах, то це буде найінформативніший. надійний варіант, за умови, що ви будете скрізь ставити ruby ​​і оновлювати бібліотеку whois. Тільки цей спосіб показував інформацію про всі домени, що мені траплялися. Якщо дороблю скрипт, щоб він працював з усіма доменами, оновлю.

Поки я просто зробив милицю і розпарив висновок за допомогою bash наступним чином:

#!/bin/bash DOMAIN="$1" data=$(/etc/zabbix/scripts/domain-simple.rb $1 | grep -E "paid|Expir" | grep -o -E "(4).(2 ).(2)|(2)/(2)/(4)" | tr . / | awk "NR == 1") )) today=$((`date "+%s"`)) lefts=$(($expire - $today)) leftd=$(($lefts/86400)) echo $leftd

Сам скрипт domain-simple.rb:

#!/usr/bin/env ruby ​​require "whois-parser" record = Whois.whois(ARGV) puts record

Я просто роблю повний висновок whois через ruby, а розпарюю його башем, тому що вмію в ньому працювати. Вийшов варіант, що працює з усіма доменами. Можна цим скриптом передавати дані в zabbix.

Linux утиліти whois та jwhois

У коментарях до початкової статті мені підказали про консольну утиліту whois, а пізніше я нагуглив і ще одну - jwhois. Я подивився на них уважно і написав простий скрипт для парсингу інформації про делегування. Цей спосіб найпростіший і зручний. Обидві утиліти ставляться через yum, перша з базового репозиторію, друга з . Не потрібно додаткових інструментів. Інформативність середня - всі популярні домени є, у тому числі .io, але.pro і.fm не підтримує. На жаль і ах, мені вони потрібні.

Встановимо утиліту whois:

# yum install whois

Простий скрипт, який парсить висновок утиліти і показує скільки залишилося днів до завершення проплаченого періоду домену.

#!/bin/bash DOMAIN="$1" data=$(whois $1 | grep -E "paid|Expir|expir" | /(2)/(4)" | tr . / | awk "NR == 1") expire=$((`date -d "$data" "+%s"`)) today=$((`date "+%s"`)) lefts=$(($expire - $today)) leftd=$(($lefts/86400)) echo $leftd

Зберігайте скрипт та перевіряйте роботу. Працює як і, як і скрипт для ruby.

# ./domain_left.sh сайт 358

Я для себе вирішив зупинитися на цьому способі, як найпростішому та універсальному.

Модуль python-whois для моніторингу оплати доменів

В рамках свого дослідження я вирішив перевірити, як за допомогою python можна отримувати інформацію whois. Я підозрював, що має бути готовий модуль для цього і не помилився. Такий модуль є python-whois. Для його роботи потрібен python версії 2, який стоїть в системі CentOS 7, що дуже зручно.

Ми повинні тільки встановити цей модуль через pip. Pip для 2-ї версії ставиться з .

# yum install python2-pip # pip install python-whois

#!/usr/bin/env python import whois from datetime import datetime from sys import argv,exit now = datetime.now() domain = argv w = whois.whois(domain) if type(w.expiration_date) == list: w.expiration_date = w.expiration_date else: w.expiration_date = w.expiration_date domain_expiration_date = str(w.expiration_date.day) + "/" + str(w.expiration_date.month) + "/" + str(w.expiration_date year) timedelta = w.expiration_date - now days_to_expire = timedelta.days

Перевірка:

# ./domain-left.py сайт 358

Працює так само, як і попередні скрипти. Рішення на python підтримує зони.pro, .fm, не підтримує.io.

Whois клієнт для Node.js

Останнє розглянуте мною консольне рішення щодо отримання даних whois ґрунтується на клієнті для Node.js. Цей спосіб незручний, як і з ruby, тим, що треба окремо ставити node на сервер. Якщо python на centos сервері точно буде, то node доведеться ставити окремо. Зробимо це.

# curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash - # yum install nodejs

Встановлюємо whois client:

# npm install whois

Під node.js я програмувати взагалі не вмію і зі скриптами ніколи не працював. Тож готового скрипту для zabbix не зробив. Покажу на простому прикладі, як виконувати перевірку Робимо скрипт і в ньому відразу вказуємо домен для перевірки.

Var whois = require("whois") whois..log(data) ))

Запускаємо його:

# node domain-left.js

У висновку побачите звичну інформацію whois у такому вигляді, як й інших перевірок. Якби цей спосіб перевіряв усі необхідні мені домени, я його доробив би. Він розуміє домени.pro і.io, але не розуміє. Тож я не став на ньому докладно зупинятися.

Скрипт auto discovery доменів для zabbix

Для того, щоб автоматично передавати в заббікс відразу всі наші домени, створимо ще один скрипт, який парсить текстовий файл зі списком доменів і передаватиме його в zabbix.

# mcedit /etc/zabbix/scripts/domain_discovery.sh #!/bin/bash JSON=$(for i in `cat /etc/zabbix/scripts/domain_list.txt`; do printf "(\"(#DOMAIN)\) ":\"$i\"),"; done | sed "s/^\(.*\).$/\1/") printf "(\"data\":[" printf "$JSON" printf "])"

І останнє – створимо файл зі списком доменів. Кожен домен з нового рядка.

# mcedit /etc/zabbix/scripts/domain_list.txt yandex.ru mail.ru

Перевіримо роботу скрипту для парсингу:

# /etc/zabbix/scripts/domain_discovery.sh ("data":[("(#DOMAIN)":"mail.ru"),("(#DOMAIN)":"yandex.ru")])

Висновок підходить для передачі в заббікс.

Налаштування агента zabbix

Я налаштовую zabbix агентна роботу із скриптом на ruby. Ви можете вибрати скрипт на свій розсуд. Змінити потрібно лише шлях до скрипту в описі ітему domain.expire.

Додамо скрипти через Настройки користувача(UserParameter) агента. Для цього йдемо в папку з скриптами користувача /etc/zabbix/zabbix_agentd.dі створюємо там конфіг для наших параметрів:

# mcedit /etc/zabbix/zabbix_agentd.d/domain.conf UserParameter=domain.discovery[*], /bin/bash /etc/zabbix/scripts/domain_discovery.sh UserParameter=domain.expire[*], /usr/local/bin/ruby/etc/zabbix/scripts/domain_left.rb $1

Звертаю увагу на шлях ruby. У різних системах може бути різний. Перевірте, куди він у вас встановлений і відредагуйте шлях. Перевірити можна командою:

# whereis ruby ​​ruby: /usr/lib64/ruby /usr/local/bin/ruby/usr/local/lib/ruby /usr/share/ruby /usr/src/ruby-2.3.1/ruby.o /usr/src/ruby-2.3.1/ruby /usr/src/ruby-2.3.1 /ruby.c

Зберігайте конфіг та перезапускайте zabbix agent:

# systemctl restart zabbix-agent

У консолі закінчили налаштування, тепер йдемо до панелі адміністрування заббікс.

Створення шаблону для спостереження за доменом

Імпортуєте шаблон собі до системи. Призначаєте його хосту, в якому налаштували скрипти та чекаєте на появу даних. Хвилин через 5 перевіряєте в Latest Data:

Смішно, час делегування обох доменів однаковий. Спочатку подумав, що глюк вирішив перевірити вручну. Виявилося, що все правильно. Вони мають однаковий термін продовження. Без проблем працює спостереження за доменами. Їх потрібно перевести в Punycode і додати так само, як і звичайні домени.

Якщо потрібно, можете налаштувати час делегування домену. У даному випадкуце може бути актуальним, оскільки не продовживши відразу домен, можна потім забути.

Висновок

Онлайн курс "Адміністратор Linux"

Якщо у вас є бажання навчитися будувати та підтримувати високодоступні та надійні системи, рекомендую познайомитись з онлайн-курсом «Адміністратор Linux»в OTUS. Курс не для новачків, для вступу потрібні базові знання з мереж та встановлення Linux на віртуалку. Навчання триває 5 місяців, після чого успішні випускники курсу зможуть пройти співбесіду у партнерів. Перевірте себе на вступному тесті і дивіться програму детальніше.

Моніторинг дати продовження доменного імені – дія, яку не можна недооцінити. Я вже писав про те, і тепер давайте розберемося з іншого частою проблемою- Несподіваним закінченням терміну реєстрації доменного імені. Здавалося б, всі реєстратори на сьогодні наперед про це нагадують (причому зазвичай кілька разів). Але проблема в тому, що ці листи або не читають, або якось потрапляють у спам. Загалом, не всі знають, що в них закінчується термін реєстрації доменного імені. В результаті сайт не працює, люди не розуміють, чому, і іноді витрачають багато часу, щоб зрозуміти, що відбувається. Тим часом доменне ім'я пропадає з кешу DNS, і за кілька днів (чи навіть раніше, залежить від різних факторів) відвідувачі перестають потрапляти на сайт. Погляньмо, як моніторити дату закінчення реєстрації доменного імені. Звичайно, скриптом на bash.

Як отримати дату реєстрації доменного імені

Найпростіший варіант – використовувати глобальну базу даних whois. У ній зберігається інформація про доменні імена, така як організація, відповідальна особа, контакти для зв'язку, дата реєстрації та дата закінчення терміну реєстрації. І це якраз те, що нам потрібне. Давайте візьмемо якийсь популярний домен для прикладу. Нехай це буде yandex. Ось яка інформація зберігається в базі whois про цей домен:

$ whois yandex.ru % By submitting a query to RIPN"s Whois Service % ви можете додати до наступного терміну використання: % http://www.ripn.net/about/servpol.html#3.2 (in Ukrainian) % http://www.ripn.net/about/en/servpol.html#3.2 (in English) domain: YANDEX.RU 213.180.193.1 93.158.134.1, 2a02:6b8:0:1::1 state: REGISTERED, DELEGATED, VERIFIED org: YANDEX, LLC registrar: RU-CENTER-RU nic.ru/whois created: 1997.09.23 paid-till: 2017.10.01 free-date: 2017.11.01 source: TCI Last updated on 2017.01.03 05:46:31 MSK

Поле, яке нас цікавить - "paid-till", це дата, до якої у нас оплачено домен.

Моніторинг дати продовження доменного імені зробимо приблизно так само, як моніторинг сертифікату, але помітно простіше. Отримуємо дані про домен, шукаємо поле, що містить дату закінчення реєстрації, якщо воно є (якщо дані whois для цього домену не закриті), отримуємо цю дату, отримує сьогоднішню дату і виводимо різницю в днях. За бажання можна додати відправку листа, якщо залишилося, скажімо, менше 30 днів до закінчення реєстрації. Але не все так просто. Тому що є щонайменше три види записів про закінчення терміну реєстрації. Перший виглядає так:

Paid-till: 2017.10.01

Другий виглядає так:

Registrar Registration Expiration Date: 2020-09-13T21:00:00-0700

І третій виглядає так:

Registry Expiry Date: 2018-05-11T04:00:00Z

І нам, відповідно, треба передбачити усі три варіанти. Або якщо зустрінеться четвертий, то й четвертий. Поки давайте розберемося з цими трьома.

Ось як виглядає скрипт:

#!/bin/bash # Якщо параметр не вказано, виводимо підказку та завершуємо роботу if [ "$1" == "" ] then cat<< EOF Script that monitors how many days left until domain registration ends. Usage: $(basename $0) domain.name EOF exit fi # Получаем строку, содержащую дату окончания регистрации PAIDTILL=$(whois $1 | grep "paid-till\|Registrar Registration Expiration Date\|Registry Expiry Date") # Если такая строка не найдена, выходим с ошибкой if [ -z "$PAIDTILL" ] then echo "Registration end date is not available in whois database" exit 1 else # Если дата выглядит как ГГГГ.ММ.ДД, то добавляем 00:00:00 в конец [[ "$PAIDTILL" =~ "paid-till" ]] && PAIDTILL=${PAIDTILL//./-}" 00:00:00" # Удаляем из строки всё до двоеточия, само двоеточие # плюс автоматически будут удалены пробелы PAIDTILL=${PAIDTILL#*:} # Получаем текущую дату CURRENTDATE=$(date "+%Y-%m-%d %H:%M:%S") # Находим разницу между датами, получаем количество оставшихся дней DAYS_LEFT=$((($(date -d "$PAIDTILL" +%s) - $(date -d "$CURRENTDATE" +%s)) / 86400)) # Выводим, сколько дней осталось echo $DAYS_LEFT days left fi

Ось результат роботи цього скрипта для різних доменів на момент написання статті:

$ ./check-dn-reg.sh linux.org 492 days left $ ./check-dn-reg.sh yahoo.com 2206 days left $ ./check-dn-reg.sh yandex.ru 270 days left $ . /check-dn-reg.sh google.com 1349 days left $ ./check-dn-reg.sh ok.ru 331 days left $ ./check-dn-reg.sh vk.com 170 days left $ ./check -dn-reg.sh linux.org 492 days left $./check-dn-reg.sh linux.org.ru 345 days left

Погодьтеся, зручно виглядає. Моніторинг дати продовження доменного імені скриптом розміром 660 байт. Вже можна використовувати моніторинг за допомогою Nagios або Zabbix.

Якщо є доповнення, зауваження, пишіть у коментарі.