1

我有一个 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 脚本处理域并返回输出。这可能吗?

4

3 回答 3

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;
于 2012-08-24T13:26:18.153 回答
1

Do you really need to run the bash script? Here's the equivalent PHP code:

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);
}
于 2012-08-24T13:46:15.890 回答
1

是的,您可以使用exec()shell_exec()命令

于 2012-08-24T13:28:10.447 回答