使用 WHOIS 命令检查域列表

cod*_*ama 0 linux whois

我想设置一个批处理文件或某种类型的 cronjob,使用 linux 命令行来检查域名的可用性。我将提供要使用另一个文件检查的域列表。然后它必须每小时只执行 30 次检查,并且只有当域可用时,它才必须将该域名添加到不同的文件中。所以...

  1. 我必须创建一个批处理文件吗?
  2. 批处理文件中必须包含哪些命令,它将:
    1. 浏览现有的域列表
    2. 检查这些域是否可用,
    3. 从原始列表中删除该域,以及
    4. 将可用域添加到“可用”列表中。
  3. 每小时重复此命令 20 次

我确切地知道如何使用 PHP 和 cron 执行此操作,但我想知道是否有使用“whois”命令快速执行此操作的方法?这是我坚持的点(2)。

slh*_*hck 6

这并不太难。

检查 domain 列表domains.txt,并在available.txt找到后将域添加到(通过查看 的返回值grep,该值存储在 中$?)。

然后,从删除发现域domains.txtsed就地编辑。

#!/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
Run Code Online (Sandbox Code Playgroud)

注意:在 BSD 上sed,您要使用以下命令:

sed -i "" "/$domain/d" $DOMAINS
Run Code Online (Sandbox Code Playgroud)

您可以保存此脚本并从您的crontab. 进入

crontab -e
Run Code Online (Sandbox Code Playgroud)

然后添加这样一行:

*/2 *   *   *   *   /path/to/script.sh > /dev/null
Run Code Online (Sandbox Code Playgroud)

这将每两分钟运行一次脚本 ( */2)。确保之前调整到域的路径。