PHP - 如何从php控制Solaris服务器以运行root命令来执行脚本?

时间:2011-08-23 07:00:50

标签: php

是PHP的新手。

我希望有一个特定solaris服务器的下拉列表,其中从下拉列表中选择服务器时,服务器将自行执行脚本。我怎么做到这一点?

 <?php

session_start();

echo ("Select a Solaris System to audit");

?>

<form action="report.php" method="POST">

 <div>
 <select name="options">
      <option value="1">Solaris 001</option>
      <option value="2">Solaris 002</option>
      <option value="3">Solaris 003</option>
 </select>
 <br>
 <br>

 <input type="submit" value="Audit"/>

 </div>
</form>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

首先,重要的免责声明:)

请注意,后端使用的shell_exec是相当危险的功能,因为它可能会带来安全威胁。尽可能从用户输入中隔离shell_exec并应用严格的安全策略

你必须实现两个“工件”:

  1. 在每台服务器上,您需要一个执行所需脚本的后端文件。该文件应该可以通过网络访问。让我们说它可以通过URL http://*solarisservername*/justdoit访问它可能类似于

    //Check for authentication, if authenticated set $authenticated = true
    if ($authenticated){
        $script_response = shell_exec("<script to execute>");
    }
    //if you need, you may return result to the calling script
    //I'm using json format, but you may want to use plain text, XML or whatever.
    $result = array("script_response"=>$script_responce,"success"=>true);
    echo json_encode($result);
    
  2. 在您的页面上,您需要实现查询我们在上一步中设置的URL。您有两种选择:使用cURL和使用AJAX。我将使用AJAX描述jQuery方法,因为它更简单,更花哨:)。注意,它是Javascript

    <script type='text/javascript'>
    $(document).ready(function(){
        $("#submit").click(function(){
            var url = $("select[name='options']").val();
            url = url + "justdoit"; //url now contains http://*solarisservername*/justdoit
            $.ajax({
                type:post,
                dataType: 'json'
                url: url,
                success: function(data,textStatus){
                    //process your response here
                    //access script response as data.script_response.
                }
            });
        });
    });
    </script>
    <!--you dont't need method and action here, as we don't even post the form-->
    <form>
     <div>
     <select name="options">
          <option value="http://solarisserver1">Solaris 001</option>
          <option value="http://solarisserver2">Solaris 002</option>
          <option value="http://solarisserver3">Solaris 003</option>
     </select>
     <br>
     <br>
    <!--onclick='return false' prevents form from submitting-->
     <input type="submit" id='submit' onclick='return false' value="Audit"/>
    
     </div>
    </form>
    

答案 1 :(得分:0)

将此添加到您的report.php

<?php

if (isset($_POST['options'])){
   // you can get value now
   $server = $_POST['options'];

   echo $server; // will print the current selected value
}