我有一个linux命令行,我需要用PHP或Javascript(PHP首选。)执行。
命令是
keygen AB3554C1D1971DB7 \pc_code 365
但是,我想用{pccode}替换\pc_code
字符串,用户输入生成的PC代码。这是一个合法的项目,但是对程序的创建者有问题给我帮助。
请帮忙!
答案 0 :(得分:5)
您可以使用shell_exec():
$cmd = sprintf("keygen AB3554C1D1971DB7 %s 365",
escapeshellarg($pccode));
$result = shell_exec($cmd);
每当执行外部命令时,都必须非常小心以避免命令注入。您可以使用escapeshellarg()阻止此操作。
答案 1 :(得分:1)
查看exec
答案 2 :(得分:1)
可能是这个程序写得不好并将其信息输出到stderr而不是stdout。或者它可能是失败并且(正确地)将错误消息打印到stderr。在任何一种情况下,shell_exec都不会捕获stderr。但是,您应该能够通过在命令末尾添加“2>&1
”来捕获stderr,例如:
$result = shell_exec('keygen AB3554C1D1971DB7 \pc_code 365 2>&1');
echo '<pre>'.htmlspecialchars($result).'</pre>';
修改:为了保持连续性,解决问题的是下面另一个答案的评论中提到的内容:
也许它不喜欢裸露的反斜杠?你可以尝试“
\\pc_code
”
答案 3 :(得分:0)
JavaScript实际上不可能执行Linux命令(也不应该)。假设您指的是在客户端的Web浏览器上运行的JavaScript,那么就没有安全模型可以保护人们免受恶意命令行访问。 PHP是另一回事。