【发布时间】:2015-04-25 05:55:33
【问题描述】:
美好的一天。我正在阅读另一篇关于将主机名解析为 IP 并且仅使用列表中的第一个 IP 的帖子。
我想做相反的事情并使用以下脚本:
#!/bin/bash
IPLIST="/Users/mymac/Desktop/list2.txt"
for IP in 'cat $IPLIST'; do
domain=$(dig -x $IP +short | head -1)
echo -e "$domain" >> results.csv
done < domainlist.txt
我想为脚本提供从防火墙日志中收集的 1000 多个 IP 地址的列表,并将目标 IP 列表解析为域。我只想要响应文件中的一个条目,因为我将把它添加到我从防火墙导出的 CSV 作为 Excel 中的另一个“列”。我什至可以将多个响应用分号分隔在一行(或 /,|,\,* 等)。 list2.txt 是一个标准的 ascii 文件。我已经在 Mac、Linux、Windows 中尝试过 EOF。
216.58.219.78
206.190.36.45
173.252.120.6
我现在得到了什么:
domainlist.txt 与 list2.txt 完全相同,而结果却一无所有。当我运行脚本时,屏幕上也没有出现错误。
我正在运行带有 Macports 的 Mac OS X。
【问题讨论】:
-
手动执行时
dig -x是否提供您想要的输出?dig的手册页说,-f选项将在给定 IP 地址文件的情况下以批处理模式运行它。也许这是一个更好的起点? -
在这种特殊情况下
done < domainlist.txt的意义何在? for 循环根本不需要它。当我测试你的代码(没有 domainlist.txt 的东西)时,唯一可疑的是你没有为cat $IPLIST使用反引号。我想这是复制粘贴错误?如果不是,那么这就是它不起作用的原因:) 更易读的方法是使用for IP in $( cat $IFLIST ); do -
@tgo,您的建议解决了这个问题。我无法选择你作为答案。
-
@user1141869 没有问题,很高兴它有帮助。