0

我正在编写一个小脚本来对 APC 电源条进行电源控制。我的脚本运行良好,但我将它扩展到一个有 24 个插座的单元,我不希望脚本为每个端口关闭、重新启动和打开电源部分,所以我决定使用循环如下:

 for ($Outlet = 1; $Outlet <= 24; $Outlet++) {
    //Power On
    if(isset($_POST['APCPowerOnA$Outlet'])) {
         $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 1"; 
         $return=array();
         exec($shell_command, $return);
     }
    //Power Off
    if(isset($_POST['APCPowerOffA$Outlet'])) {
         $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 2"; 
         $return=array();
         exec($shell_command, $return);
     }
    //Reboot
    if(isset($_POST['APCPowerRebootA$Outlet'])) {
         $shell_command = "snmpset -v 1 -c $community $apc01_ip $mib.$Outlet i 3"; 
         $return=array();
         exec($shell_command, $return);
     }

我将此文件包含在另一个文件中,该文件的每个端口具有以下代码:

   <form method="post" action="[XXX]">
   <input type="submit" name="APCPowerOnA1" value="Power On" id="APCPowerOnA1" />
   <input type="submit" name="APCPowerOffA1" value="Power Off" id="APCPowerOffA1" />
   <input type="submit" name="APCPowerRebootA1" value="Reboot Port" id="APCPowerRebootA1" />
   </form>

注意 action="[XXX]" 只是这个论坛的一个占位符,不要在公共论坛上提供 url :)

每个端口使用其中一个,每次将 ID 和名称增加 1(此示例为端口 1)。

当我运行脚本时,将变量: $Outlet 替换为 say 1 端口响应命令,但是当我尝试循环它时,似乎没有任何效果。当我对“APCPowerOnA$Outlet”进行回显时,我得到 APCPowerOn1、APCPowerOn2 ... APCPowerOn24,那么为什么 POST 不起作用?我错过了一些明显的东西?

提前致谢!

4

1 回答 1

3

您需要双引号才能在字符串中插入变量:

$_POST['APCPowerOnA$Outlet'] =>  $_POST["APCPowerOnA$Outlet"]

或者,您可以使用字符串连接:

$_POST['APCPowerOnA' . $Outlet]

如果您不执行其中一项操作,那么您实际上是在访问 index APCPowerOnA$Outlet

于 2013-01-04T19:13:48.697 回答