Eu tenho um script de shell makedir.sh
como dado abaixo.
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
Eu dei privilégios para um usuário testuser para executar o shell script com o sudo, mas sem perguntar a senha. Para isso eu adicionei a linha abaixo em /etc/sudoers
file,
testuser ALL=(ALL) NOPASSWD: ALL
E funciona bem isso, eu poderia rodar comandos com o sudo, mas sem pedir senha. O shell script acima também funciona bem sem pedir uma senha, criando o diretório testdir
inside /usr/local
. Meu problema começa aqui. Eu quero executar este script de shell de um arquivo php
. No cenário atual, o script de shell está residindo em uma máquina remota com endereço IP 10.3.2.0. O seguinte é o meu código php
, mas, ao executar este código php, ele não está criando nenhum diretório (testdir) dentro de /usr/local/
. Por favor, informe como eu sou muito iniciante em PHP
.
Código 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
(residente em 10.3.2.0 - o mesmo acima do script de shell)
#!/bin/sh
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
Obrigado.