Bash, 批量转换IP地址

Bash, convert IP address in batch

我想使用 OSX 中的 bash 脚本将域列表转换为 IP 地址。

我创建了一个列表文件来像这样逐行显示域

www.google.com
www.yahoo.com
www.facebook.com

我使用以下脚本查找 IP 地址:

#!/bin/bash
while read -r domain
do
    echo `dig +short $domain` 
done < list

其中列表是包含这些域的文件。

然而,它最终只显示一个空字符串。

但是当我只查询一个域的时候,命令没问题。

dig +short www.google.com
> 216.58.221.132

希望有人能帮我解决问题。谢谢!

dig 具有 -f 命令行选项,可从文件中读取域名列表。从联机帮助页,

The -f option makes dig operate in batch mode by reading a list of lookup requests to process from the file filename. The file contains a number of queries, one per line. Each entry in the file should be organized in the same way they would be presented as queries to dig using the command-line interface.

运行

dig +short -f list

其中名为列表的文件包含

www.google.com
www.yahoo.com
www.facebook.com

会给你类似

的输出
74.125.239.114
74.125.239.112
74.125.239.116
74.125.239.113
74.125.239.115
fd-fp3.wg1.b.yahoo.com.
206.190.36.45
206.190.36.105
star.c10r.facebook.com.
31.13.77.6