PHP, ssh2_exec не работает должным образом

У меня есть сценарий оболочки 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.

] ]

Спасибо.

1
задан 30 July 2013 в 15:35

1 ответ

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();
?>

И посмотрим, что там написано.

0
ответ дан 30 July 2013 в 15:35

Другие вопросы по тегам:

Похожие вопросы: