PHP/ выполнение команд на удаленном сервере

L5
На сайте с 30.04.2010
Offline
0
2678

Доброго времени суток!

Идея такова:

На вебсервере [alfa] через php скрипт выполнить системную команду от рута на сервере [zetta].

Я решил пойти путем ssh2

$con = ssh2_connect('localhost', 22);


if (ssh2_auth_password($con, 'user', 'pass'))
{
echo "Authentication Successful!<br /><br />\n";
} else {
die('Authentication Failed...');
}

echo "Enter system command:";
echo "<form action='' method='post' name='form'>\n";
echo "<input type='submint' name='cmdname' size='80'>";
echo "<input type='submit' name='command' value='command'>";
echo "</form>";

if(isset($_POST['command']))
{
$stream = ssh2_exec($con, $_POST['cmdname']);
echo "Вот здесь должен быть ответ отсервера";
}

Не могу понять как вывести полученный ответ от сервера в ECHO, после выполнения $_POST['command'].

Вот что набросал, может кто подскажет как это реализовать?

Конечно цель - от пользователя root (нужно как-то залогиниться под root, возможно после аутентификации ввести SU, поймать ответ от сервера и вернуть ему правильный пароль для root) зайти в консоль (командная строка) программы X, и выполнить требуемую команду.

Понимаю, что это достаточно сложно... Поэтому для начала хотелось бы реализовать вывод полученного ответа от сервера в ECHO при выполнении системной команды, а также залогиниться под рутом.

Подскажите плиз...

Линки на статьи приветствуются!

T.R.O.N
На сайте с 18.05.2004
Offline
314
#1

stream_get_contents($stream);

есть еще такие варианты

<?php

stream_set_blocking($stream, true);

echo stream_get_contents($stream);

?>

или

<?php

stream_set_blocking($stream, true);

while($line = fgets($stream)) {

flush();

echo $line."<br />";

}

?>

на счет остального - если сервер настраивал не первоклассник - все будет заблокировано

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
N
На сайте с 06.05.2007
Offline
419
#2

Воспользоваться авторизацией по ключам и избавиться от ввода пароля.

А на том сервере можно и sudo настроить, чтобы хранить не ключ root, а какого-нибудь безобидного пользователя.

Кнопка вызова админа ()
L5
На сайте с 30.04.2010
Offline
0
#3
T.R.O.N:
stream_get_contents($stream);
есть еще такие варианты
<?php
stream_set_blocking($stream, true);
echo stream_get_contents($stream);
?>

или

<?php
stream_set_blocking($stream, true);
while($line = fgets($stream)) {
flush();
echo $line."<br />";
}
?>

на счет остального - если сервер настраивал не первоклассник - все будет заблокировано

Попробовал, приведенные конструкции. echo ничего не выводит, даже ошибок (.


Воспользоваться авторизацией по ключам и избавиться от ввода пароля.

Это дало бы эффект в случае разрешения руту логиниться по SSH.

N
На сайте с 06.05.2007
Offline
419
#4

ну так разрешите ему логиниться.

какая разница какой у вас пароль украдут из кода скрипта если этот логин может делать все ?

вообще то я там писал про sudo. и именно так и нужно делать

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий