【发布时间】:2018-04-02 09:48:00
【问题描述】:
不知道我能不能让另一双眼睛看到这个。
用例;从区域文件中获取 DNS 记录,以便运行 shell_exec 将它们导入另一个平台。
我正在尝试从区域文件、A 记录、CNAME、TXT、MX 等中获取所有类型的 DNS 记录。到目前为止,我做得很好,因为我已经成功地处理了 CNAME、TXT 和 MX 记录。
我卡在 A 记录上。不幸的是,当我在文件的每一行中搜索 A 时,这也会导致 CNAME 和 SOA 也被返回。这是我所拥有的:
// Looking for:
$search_a = 'A';
// Read from file
$lines = file("$domain.");
// Check if the line contains A
foreach($lines as $a) {
if(strpos($a, $search_a) !== false) {
$a_array = "$a";
$a_record_output = preg_split('/(.'.$domain.'.|\s)/', $a_array, -1, PREG_SPLIT_NO_EMPTY);
print_r($a_record_output);
}
}
这会返回:
Array
(
[0] => domain.io.
[1] => SOA
[2] => ns1.domain.io.
[3] => stuff.
[4] => (64719
[5] => 14400
[6] => 7200
[7] => 2419200
[8] => 3600)
)
Array
(
[0] => domain.io.
[1] => A
[2] => 8.8.8.8
)
Array
(
[0] => autodiscover
[1] => CNAME
[2] => autodiscover.outlook.com.
)
显然它正在工作,但是,我需要排除 SOA 和 CNAME 记录,因为我只搜索 A 记录。
我需要完全忽略 CNAME 和 SOA 数组,只返回仅包含 A 的数组。这是区域文件的摘录
domain.io. A 8.8.8.8
www CNAME domain.io
有没有办法做到这一点?
【问题讨论】:
-
区域文件是制表符分隔文件吗?像这样:example.com。在 192.0.2.1
-
发布您的初始文件内容
标签: php regex preg-split