我目前使用我们用来移动数据的shell脚本,它使用以下语法运行:
./script.sh <env> <y|n> <file> <file> <file> <file> <file> <file>
$1 sets a variable for production/test
$2 sets a variable whether we perform a tarball of the destination folder before copying
$3 - $# is a space delimited list of files to move (there has to be a minimum of one file, no maximum)
我需要将此脚本传递给其他用户,但不要相信他对shell的访问权限。
我想要做的是创建一个包含三个字段的网页。字段1是环境的单选按钮,将作为$ 1传递。第二场是一个是/否的单选按钮,我想以2美元的价格通过。而Field 3是一个多选框,我希望从静态文本文件中填充,或者(最好)在源目录上运行“ls” - 这将是$ 3 +
这可能吗?我可以在服务器上运行Apache,因此可以使用PHP甚至CGI。
谢谢!
答案 0 :(得分:0)
是的,这是可能的。但它将作为Web服务器用户运行。
只需使用system()
或exec()
来调用您的bash脚本。
文档: http://php.net/manual/en/function.system.php http://php.net/manual/en/function.exec.php
请务必使用escapeshellarg()
http://www.php.net/manual/en/function.escapeshellarg.php删除不需要的输入。也许还要编写自己的黑名单。
示例:
$script_path = '/path/to/script.sh';
system( $script_path . ' ' . $argument );
答案 1 :(得分:0)
<?php
if (!empty($_POST)) { //more tests required here...
exec('sh /path/to/shell ' . $_POST['var1'] . ' ' . $_POST['var2'] . ' ' . $_POST['var3']);
}
?>