从PHP运行Bash脚本创建VM

时间:2013-11-21 09:05:19

标签: php bash web virtual-machine virtualization

目前我正在开发一个项目,需要通过点击网页来创建虚拟机。

这是我的bash脚本,我用它来创建一个虚拟机,它工作正常但是当通过php调用时我无法运行这个脚本。

 #!/bin/bash
 set -e
 if [ ! -f "/tmp/value.dat" ] ; then
      value=0
 else
      value=`cat /tmp/value.dat`
 fi
 value=`expr ${value} + 1`
 echo "${value}" > /tmp/value.dat
 qemu-img create -f raw /var/lib/libvirt/images/disk$value.img 5.1G
 virt-install --name=instance$value --ram=1024 --arch=i686 --vcpus=1 --os-type=linux  --disk path=/var/lib/libvirt/images/disk$value.img,bus=virtio,format=raw --location ftp://10.21.40.227/ --extra-args "ks=ftp://10.21.40.227/ks.cfg"  --autostart

这是我试图运行的php脚本

 <?php
    $bashfile = shell_exec("sudo /root/Desktop/install.sh");
    echo "<pre>$bashfile<pre>";
 ?>

这是我在sudoers文件中的条目

apache ALL =(ALL)NOPASSWD:ALL

仍然我无法通过php建议一些解决方案来运行bash脚本。

1 个答案:

答案 0 :(得分:0)

问题可能是未在shell中调用时$PATH未正确设置。尝试使用qemu-imgvirt-install的绝对路径。

我在这里看到的另一个问题是:你真的不希望Apache能够通过sudo运行任何命令,对吗?将您的sudoers行更改为仅限于您的脚本:

apache  ALL=NOPASSWD:/root/Desktop/install.sh