我有一个makedir.sh
如下所示的 shell 脚本。
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
我已授予用户 testuser 权限以使用 sudo 执行 shell 脚本,但无需询问密码。为此,我在/etc/sudoers
文件中添加以下行,
testuser ALL=(ALL) NOPASSWD: ALL
而且效果很好,我可以使用 sudo 运行命令,但无需询问密码。上面的 shell 脚本也可以正常工作,无需询问密码,testdir
在/usr/local
. 我的问题从这里开始。我想从一个php
文件中运行这个 shell 脚本。在当前场景中,shell 脚本驻留在 IP 地址为 10.3.2.0 的远程机器中。以下是我的php
代码,但是,在运行这个 php 代码时,它没有在/usr/local/
. 请告知,因为我是PHP
.
PHP 代码
<?php
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("10.3.2.0", "22")))
{
echo "fail: unable to establish connection";
}
else
{
if(!ssh2_auth_password($con, "testuser", "abcdef"))
{
echo "fail: unable to authenticate ";
}
else
{
$stream = ssh2_exec($con, "./makedir.sh");
stream_set_blocking($stream, true);
$item = "";
while ($input = fread($stream,4096)) {
$item .= $input;
}
echo $item;
}
}
?>
SHELL SCRIPT - makedir.sh
(位于 10.3.2.0 - 与上述 shell 脚本相同)
#!/bin/sh
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
谢谢。