如何将PHP前端与makefile/bash脚本接口?

如何将PHP前端与makefile/bash脚本接口?,php,bash,codeigniter,interface,makefile,Php,Bash,Codeigniter,Interface,Makefile,我正在编写一个通过CLI和web UI管理多个SSH隧道的项目 Bash脚本 该服务使用Bash编写,可以: 启动给定隧道或所有隧道 停止给定隧道或所有隧道 给定隧道或所有隧道的状态 列出所有可用的隧道 生成文件脚本 makefile可以执行一些“管理”任务: 添加主机为隧道添加配置 删除主机为隧道添加配置 等等 网络用户界面 我想创建一个web界面——使用PHP/CodeIgniter——来控制服务 问题: 如何将CodeIgniter与makefile和bash命令连接起来 具体来

我正在编写一个通过CLI和web UI管理多个SSH隧道的项目

Bash脚本 该服务使用
Bash
编写,可以:

  • 启动
    给定隧道或所有隧道
  • 停止
    给定隧道或所有隧道
  • 给定隧道或所有隧道的状态
  • 列出所有可用的隧道
生成文件脚本
makefile
可以执行一些“管理”任务:

  • 添加主机
    为隧道添加配置
  • 删除主机
    为隧道添加配置
  • 等等
网络用户界面 我想创建一个web界面——使用
PHP
/
CodeIgniter
——来控制服务

问题:
  • 如何将CodeIgniter与makefile和bash命令连接起来
  • 具体来说,如何使用退出状态为PHP脚本提供信息
    • PHP的
      exec
      ()命令可能会满足您的需要

      您可以使用
      exec
      运行脚本,并捕获脚本的输出和退出代码。例如:

      $output = array();
      $exitCode = null;
      
      exec("/path/to/my/script arg1 arg2 2>&1", $output, $exitCode);
      
      $output
      将是一个字符串数组-脚本输出的行<代码>$exitCode
      将是脚本返回的退出代码

      但是,请注意,使用
      exec
      会引起一些问题:

    • 安全性-您必须小心确保应用程序的用户不能在服务器上执行任意代码

    • 权限-通过
      exec
      运行的命令将作为web服务器用户运行;对于Debian/Ubuntu上的Apache,这将是
      www-data


    • 1) 这就是为什么我使用
      makefile
      和一个服务,它们抽象了我想要执行的操作。2) 我想我必须编辑
      sudoers
      以允许Apache执行我的服务。起初,由于与权限相关的错误,我遇到了麻烦。只打印了第一行。我通过如下重定向命令解决了这个问题:
      exec('/etc/init.d/mast list 2>&1',$output,$exitCode)
      。看见