【发布时间】:2017-09-14 00:35:36
【问题描述】:
我想用 php 执行我的脚本 bash。我的脚本将我登录到我的服务器然后创建我的帐户。
SCRIPT="useradd martinouh --home /home/martinouh --create-home; echo martinouh:$pass | chpasswd; usermod -s /bin/bash martinouh; usermod -aG sudo martinouh; usermod -aG docker martinouh;"
sshpass -p $pass ssh -o StrictHostKeyChecking=no root@$ip "${SCRIPT}"
sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub martinouh@$ip
但是当我通过shell_exec(); 运行它时,它会执行脚本,但不会执行sshpass 的部分。
我应该怎么做才能执行它?
目前,只是为了测试shell_exec();。我正在通过调用包含以下内容的 localhost/script.php 来执行我的脚本
<?php
$output = shell_exec('bash select.sh');
echo $output;
?>
我在 error_log 中得到了这个:
Failed to change pseudo terminal's permission: Permission denied
Failed to change pseudo terminal's permission: Permission denied
Failed to change pseudo terminal's permission: Permission denied
Failed to change pseudo terminal's permission: Permission denied
也许这与 selinux 和 apache 权限有关?
【问题讨论】:
-
手动执行 bash 脚本是否按预期工作?
-
是的,当我手动运行它时,它确实按预期运行。
-
您能否提供更多关于您如何使用 php 执行它的详细信息?
-
目前我只是通过调用 localhost/script.php 来执行它。其中包含
-
我认为是关于 apache 的用户/组尝试将其更改为您的用户/组,如果可行,基于 debian 的发行版
/etc/apache2/envvars