Выключение "удаленного" хоста.

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Выключение "удаленного" хоста.

Сообщение Stunt » Чт мар 20, 2014 2:54 am

Доброго времени суток форумчанам.
Принимайте новичка с вопросами ;)
Хочется с кнопки в веб-интерфейсе выключать (или перезагружать) удаленный компютер по SSH.
Для этого к кнопке был привязан сценарий "nas_off"
В сценарии прописан следующий скрипт (нашел на хабре :) )

Код: Выделить всё

if (!function_exists ("ssh_connect")) die ("function ssh_connect doesn't exist");
if(!($con = ssh_connect("тут айпи", 22))){
    echo  "fail: unable to establish connection\n";
} else {
    // авторизуемся по имени пользователя и паролю
    if(!ssh_auth_password($con, "тут пользователь", $_GET["тут пароль"])) {
        echo  "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo  "okay: logged in...\n";
       // выполняем комманду
        if (!($stream = ssh2_exec($con, "reboot" ))) {
            echo  "fail: unable to execute command\n";
        } else {
            // collect returning data from command
            stream_set_blocking ($stream, true);
            $data = "";
            while ($buf = fread ($stream,4096)) {
                $data .= $buf;
            }
            fclose ($stream);
                echo $data;
        }
    }
} 
Но, при нажатии на кнопку ничего не происходит.
Запуск по ссылке выдает - Request: &script=nas_off Running script: nas_offfunction ssh_connect doesn't exist
В X-Ray - a:1:{s:6:"script"; s:7:"nas_off"; }

В какую сторону вести раскопки? :roll:

MDM под Ubuntu 12.04, выключать пытаюсь FreeNAS8. Обе машины в одной сети.
binladin
Сообщения: 143
Зарегистрирован: Чт фев 06, 2014 9:32 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Выключение "удаленного" хоста.

Сообщение binladin » Чт мар 20, 2014 8:05 am

Stunt писал(а): Но, при нажатии на кнопку ничего не происходит.
Запуск по ссылке выдает - Request: &script=nas_off Running script: nas_offfunction ssh_connect doesn't exist
В X-Ray - a:1:{s:6:"script"; s:7:"nas_off"; }

В какую сторону вести раскопки? :roll:
Дык очевидно даже для инженера-механика :)
Function ssh_connect doesn't exist - функцию ssh_connect вы пытаетесь вызвать, а где она у вас объявлена и объявлена ли вообще ?
Срабатывает первая строчка:
if (!function_exists ("ssh_connect")) die ("function ssh_connect doesn't exist");
Перевожу - "если функция ssh_connect не существует, сообщить "функция такая-то не существует"".

Какая библиотека и как подключена ? Вы libssh2, libssh2-php поставили ?

Читайте - http://www.php.net/manual/ru/book.ssh2.php и http://kvz.io/blog/2007/07/24/make-ssh- ... -with-php/
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Выключение "удаленного" хоста.

Сообщение Stunt » Чт мар 20, 2014 3:42 pm

Что для инжинера очевидно - для гуманитария непостижимо ;)
Побрел "курить" ссылки.
Спасибо за направление.
binladin
Сообщения: 143
Зарегистрирован: Чт фев 06, 2014 9:32 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Выключение "удаленного" хоста.

Сообщение binladin » Чт мар 20, 2014 6:03 pm

Не затягивайтесь :lol: Если не получится, спрашивайте, будем пытаться разобраться.
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Выключение "удаленного" хоста.

Сообщение Stunt » Чт мар 20, 2014 10:01 pm

binladin писал(а): Какая библиотека и как подключена ? Вы libssh2, libssh2-php поставили ?

Читайте - http://www.php.net/manual/ru/book.ssh2.php и http://kvz.io/blog/2007/07/24/make-ssh- ... -with-php/
Вот теперь установил, по второй ссылке...
Но пишет все то же самое =(
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Выключение "удаленного" хоста.

Сообщение Stunt » Чт мар 20, 2014 10:50 pm

"Ураа, Дядя Федор, заработало!!!" (с) :)
Значит так: вот по этой инструкции http://newblog.kz/posts/view/29
нашел ошибку в скрипте.
Было:

Код: Выделить всё

if(!ssh_auth_password($con, "тут пользователь", $_GET["тут пароль"]))
Стало:

Код: Выделить всё

if(!ssh2_auth_password($con, "ЛОГИН", "ПАРОЛЬ"))
т.е. убрал квадратные скобки, ГЕТ и увидел заветную надпись -
Request: &script=nas_off Running script: nas_offokay: logged in...

binladin спасибо за направление ;)
binladin
Сообщения: 143
Зарегистрирован: Чт фев 06, 2014 9:32 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: Выключение "удаленного" хоста.

Сообщение binladin » Чт мар 20, 2014 11:17 pm

Всегда пожалуйста, ... по мере возможности ;)
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: Выключение "удаленного" хоста.

Сообщение PAV » Пт мар 21, 2014 11:32 am

Stunt: Так окончательный код выложите, пожалуйста.
Stunt
Сообщения: 39
Зарегистрирован: Вс мар 16, 2014 8:17 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Выключение "удаленного" хоста.

Сообщение Stunt » Пт мар 21, 2014 2:20 pm

Код привязанный к кнопке через сценарии выглядит так:

Код: Выделить всё

if (!function_exists ("ssh2_connect")) die ("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("ИП адрес", 22))){
    echo  "fail: unable to establish connection\n";
} else {
    // авторизуемся по имени пользователя и паролю
    if(!ssh2_auth_password($con, "ЛОГИН", "ПАРОЛЬ")) {
        echo  "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo  "okay: logged in...\n";
       // выполняем комманду
        if (!($stream = ssh2_exec($con, "shutdown -p now" ))) {
            echo  "fail: unable to execute command\n";
        } else {
            // collect returning data from command
            stream_set_blocking ($stream, true);
            $data = "";
            while ($buf = fread ($stream,4096)) {
                $data .= $buf;
            }
            fclose ($stream);
                echo $data;
        }
    }
}
PAV
Сообщения: 949
Зарегистрирован: Пт дек 06, 2013 11:30 am
Откуда: Москва
Благодарил (а): 68 раз
Поблагодарили: 94 раза

Re: Выключение "удаленного" хоста.

Сообщение PAV » Чт апр 10, 2014 5:03 pm

А у меня что-то не получается.
Загрузил.
команда php -m |grep ssh2 выдает ssh2
Но ответ Running script: NASsysTestfunction ssh2_connect doesn't exist
Ответить