将变量传递给shell脚本的网页

时间:2013-05-07 09:44:58

标签: php shell cgi

我目前使用我们用来移动数据的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。

谢谢!

2 个答案:

答案 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']);
  }
?>

http://php.net/manual/en/function.exec.php