我有一个bash脚本如下:
#!/bin/bash
for i in `cat domains` ; do
tag=$(echo -n $i" - "; whois $i | grep -o "Expir.*")
reg=$(echo -n -" "; whois $i | grep "Registrar:")
echo $tag $reg
sleep .5s
done;
我希望有一个php页面,用户可以在其中粘贴域名列表,当他们点击发送时,调用bash脚本处理域并返回输出。这可能吗?
答案 0 :(得分:4)
这是可能的,但在使用用户输入执行命令时需要注意。您可以使用exec()
或反引号从PHP执行服务器上的命令。
请注意确保用户输入的内容实际上是一个URL,而不是用于在您的服务器上执行恶意命令的内容。
<小时/> 示例:强>
您的代码可能如下所示:
$output = array();
$urls = $_POST["urls"];
// perform necessary sanitation checks if needed
exec('/path/to/your/script '. implode(' ', $urls), $output);
echo $output;
答案 1 :(得分:1)
是的,您可以使用exec()
或shell_exec()
命令
答案 2 :(得分:1)
你真的需要运行bash脚本吗?这是等效的PHP代码:
foreach ($domains as $domain) {
$domain = addslashes($domain);
exec("whois '$domain'", $results);
foreach ($results as $line) {
if (preg_match('/Expir.*/', $line, $matches)) $tag = $matches[0];
if (preg_match('/Registrar:/', $line)) $reg = $line;
}
echo $domain.' - '.$tag.' - '$reg."\n";
usleep(500000);
}