У меня есть сценарий оболочки makedir.sh
, как указано ниже.
sudo -H sh -c '
mkdir /usr/local/testdir;
if [ $? -eq 0 ];then
echo "Successfull";
else
echo "Unsuccessfull";
fi
'
Я дал привилегии пользователю testuser для выполнения сценария оболочки с помощью sudo, но без запроса пароля. Для этого я добавляю строку ниже в файл /etc/sudoers
,
testuser ALL=(ALL) NOPASSWD: ALL
И это отлично работает, я мог запускать команды с sudo, но не спрашивая пароль. Вышеупомянутый скрипт оболочки также работает нормально, не спрашивая пароль, создавая каталог testdir
внутри /usr/local
. Моя проблема начинается здесь. Я хочу запустить этот скрипт из файла php
. В текущем сценарии сценарий оболочки находится на удаленной машине с IP-адресом 10.3.2.0. Ниже приведен мой код php
, но при запуске этого php-кода он не создает никаких каталогов (testdir) внутри /usr/local/
. Пожалуйста, сообщите, так как я очень новичок в PHP
.
Спасибо.
phpseclib, чистая PHP-реализация SSH , обычно лучше, чем libssh2. Лучше при диагностике и надежности тоже. В вашем случае ... я бы попробовал это:
<?php
include('Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('./makedir.sh');
echo $ssh->getLog();
?>
И посмотрим, что там написано.