Перевірте список доменів за допомогою команди WHOIS


0

Я хочу налаштувати певний пакетний файл або cronjob, використовуючи командний рядок linux, щоб перевірити наявність доменних імен. Я буду надавати список доменів, щоб перевірити, використовуючи інший файл. Потім він повинен виконувати лише 30 перевірок на годину, і тільки якщо домен доступний, він повинен додати це доменне ім'я до іншого файлу. Тому...

  1. Чи потрібно створювати пакетний файл?
  2. Яку команду потрібно передати в пакетний файл, який:
    1. переміщатися по існуючому списку доменів
    2. перевірити, чи доступні ці домени,
    3. видалити цей домен із початкового списку, і
    4. додати доступний домен до "доступного" списку.
  3. Повторіть цю команду 20 разів на годину

Я точно знаю, як це зробити з PHP і cron, але я хочу знати, чи є швидкий спосіб зробити це за допомогою команди "whois"? Це - пункт (2) що я приклеювався на.


Я написав скрипт на PHP, що робить, але зараз я шукаю швидкий спосіб зробити це за допомогою командного рядка, використовуючи команду "whois".
coderama

Додам більш точні питання ...
coderama

(я втратив сценарій php ....)
coderama

Щоб розпочати вирішення цієї проблеми, спробуйте прочитати це посилання: mattgemmell.com/2008/12/08/what-have-you- пробував
Octávio Filipe Gonçalves

1
@RD: Вибачте, як ви можете бачити в моєму профілі, я багато допомагаю людям. Але я думаю, ви не просите допомоги в конкретному питанні, яке ви маєте у вашому коді. Ви хочете, щоб тільки хтось написав програмне забезпечення для вас, зі списком специфікацій, які ви згадали у своєму питанні. Я думаю, ви можете трохи розібратися, щоб вирішити проблему, а потім, якщо ви застрягли в коді, зверніться за допомогою.
Octávio Filipe Gonçalves

Відповіді:


6

Це не надто складно.

Перевірте список доменів domains.txtі додати домен available.txt щойно він знайдений (переглянувши повернене значення grep, яка зберігається в $? ).

Потім видаліть знайдені домени з domains.txt с sed редагування на місці.

#!/bin/bash

AVAILABLE=~/available.txt
DOMAINS=~/domains.txt

lockfile whois-script.lock

while read -r domain; do
  whois $domain | grep -qci "No match"
  if [ $? -ne 0 ]; then
    # found
    echo $domain >> $AVAILABLE
  fi
done < $DOMAINS

while read -r domain; do
  sed -i "/$domain/d" $DOMAINS
done < $AVAILABLE

rm -f whois-script.lock

Примітка: На BSD sed, потрібно використовувати таку команду:

sed -i "" "/$domain/d" $DOMAINS

Ви можете зберегти цей скрипт і викликати його з вашого crontab. Enter

crontab -e

а потім додати рядок так:

*/2 *   *   *   *   /path/to/script.sh > /dev/null

Цей сценарій буде запускатися кожні дві хвилини ( */2 ). Переконайтеся, що ви раніше налаштували шляхи до домену.


Залежно від того, як часто змінюється вхідний файл, ви можете додати файл блокування, щоб запобігти одночасному запуску двох екземплярів, щоб уникнути умов гонки між перевіркою доменів і видаленням записів з вхідного файлу.
Bram

Гарний пункт, особливо з двома протоколом перевірки. Ви думаєте, що має більше сенсу? (Див. Моє оновлення)
slhck

Я думав про це більше як про "вправу для читача" :) але ваш оновлений відповідь, ймовірно, буде робити саме те, що просив ОП. Раніше я забув заохотити його.
Bram

0

Навіщо переживати всі неприємності? Тепер ви можете придбати всі потрібні дані whois. Я не кажу, що це буде дешево (наприклад https://alldomainsdb.com/ ), але це заощадить вам багато важкої роботи. Але якщо вам потрібна велика кількість даних whois. Якщо достатньо 30 перевірок на годину, виконайте командний файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.