Я хочу настроить пакетный файл или cronjob какого-то рода, используя командную строку Linux, для проверки доступности доменных имен. Я предоставлю список доменов для проверки с помощью другого файла. Затем он должен выполнять только 30 проверок в час, и только если домен доступен, он должен добавить это доменное имя в другой файл. Итак...
- Нужно ли мне создавать пакетный файл?
- Какую команду необходимо включить в пакетный файл, чтобы:
- перемещаться по существующему списку доменов
- проверьте, доступны ли эти домены,
- удалить этот домен из исходного списка и
- добавьте доступный домен в список «доступных».
- Повторяйте эту команду 20 раз каждый час.
Я точно знаю, как это сделать с помощью PHP и cron, но я хочу узнать, есть ли быстрый способ сделать это с помощью команды "whois"? Я застрял на пункте (2).
решение1
Это не так уж и сложно.
Проверьте список доменов 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
). Не забудьте предварительно скорректировать пути к домену.
решение2
Зачем все это? Теперь вы можете купить все данные whois, которые вам нужны. Я не говорю, что это будет дешево (например,https://alldomainsdb.com/) но это сэкономит вам много тяжелой работы. Но это если вам нужен большой объем данных whois. Если 30 проверок в час достаточно, продолжайте и сделайте пакетный файл.