【发布时间】:2022-01-01 14:18:28
【问题描述】:
我对 PHP 很陌生,但我正在为自己构建一个工具,以避免使用多个站点检查域信息,并且单击一次即可获得所有内容。
我遇到的问题是我正在尝试运行 whois 命令,如果我指定 IP 地址(在代码中手动写入 IP),该命令有效,就像我尝试插入变量而不是 IP 时一样(客户通过网站输入的是域名,我从域中获取IP(A记录),并尝试使用whois命令)grep似乎不再工作了。
我的想法是使用 grep “descr” 来查看 IP 属于哪个公司。
工作时的示例:
$Host = shell_exec("whois 141.136.44.163 | grep 'descr'");
echo "<pre>$Host</pre>"
输出:
描述:Hostinger International Ltd. 描述:主机LT
当我尝试使用一个变量时,我是通过这个命令行从域名中获取的:
$outputA = shell_exec("dig +short a $Domain");
我将它用于 whois:
$Host = shell_exec("whois $outputA | grep 'descr'");
我从 whois 收到的答案是完整的信息,就像您在没有 grep 的情况下运行命令一样:(whois IP:address)
因此,grep 似乎不再工作了。我得到这样的东西:enter image description here
知道如何解决这个问题,或者是什么导致了这个问题?一旦我用 $outputA 回显整个 whois 命令行,我就会收到一个正常的命令行,例如,如果我写入终端,它可以正常工作(收到来自 $outputA 的 IP,并且 grep 正在通过终端工作)。
作为参考,我的整个代码:
$Domain = $_POST['DomainName'];
echo "DNS records for domain:", $Domain;
$outputNS = shell_exec("dig +short ns $Domain");
$outputA = shell_exec("dig +short a $Domain");
$outputMX = shell_exec("dig +short mx $Domain");
$outputTXT = shell_exec("dig +short txt $Domain");
echo "<pre>$outputNS</pre>";
echo "<pre>$outputA</pre>";
echo "<pre>$outputMX</pre>";
echo "<pre>$outputTXT</pre>";
$Registrar = shell_exec("whois $Domain | grep 'Registrar'");
$Host = shell_exec("whois $outputA | grep 'descr'");
echo "Original domain's Registrar:";
echo "<pre>$Registrar<pre>";
echo "<pre>$Host<pre>";
【问题讨论】: