ssh2 exec — PHP: выполнение команд сервера для удаленного хоста

Я новичок в мире PHP, но хочу установить относительно простой скрипт PHP, который будет выполнять команды оболочки для удаленного хоста через ssh2_exec, когда пользователь нажимает кнопку на веб-странице. Я хотел бы, чтобы это обрабатывалось через POST, а не GET. Я хочу избежать веб-CGI с помощью скриптов bash.

После рассмотрения эта документация по ssh2_exec Мне удалось получить некоторое представление о том, что нужно сделать, но мне все еще нужна помощь.

Чтобы лучше понять, чего я пытаюсь достичь, позвольте мне объяснить. Я ищу два текстовых поля и кнопку отправки на странице. Давайте назовем эти текстовые поля $var1 а также $var2, Я хочу, чтобы пользователь заполнил оба текстовых поля, нажал «Отправить» и отправил команду на удаленный сервер, которая выглядит следующим образом:

# [root@server] $var1 /home/$var2.sh

Теперь я не совсем рядом с тем, где мне нужно быть, но вот (нерабочий) код, который я скомпилировал самостоятельно и ищу способы заставить его работать или улучшать. Также я понимаю, что подключение к удаленному серверу и запуск команд с правами root через скрипт PHP не очень хорошая идея. Но это чисто для разработки / тестирования и ничего для производства. Я просто пытаюсь ознакомиться с процессом. Во всяком случае, вот что у меня есть:

<?php
$connection = ssh2_connect('192.168.1.1', 22);
ssh2_auth_password($connection, 'root', 'password');

if (isset($_POST['button']))
{
$stream = ssh2_exec($connection, 'touch /root/test/test.txt');
}
?>
<html>
<body>
<form method="post">
<p>
<button name="button">Touch</button>
</p>
</form>
</body>

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

Итак, с учетом сказанного, если у кого-либо есть понимание, полезные ссылки, советы, что-нибудь — это будет с благодарностью!

1

Решение

Смотрите этот пост: Другой пост

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

Использование этой библиотеки должно помочь вам достичь того, что вам нужно.

Пока это для тестирования. Или я бы использовал XML-RPC вызывать серверные программы

1

Другие решения

Я постараюсь объяснить шаги, которые вам нужно пройти, чтобы выполнить то, что вы хотите.

  1. Вы хотите, чтобы HTML-страница где-то на вашем сайте. Это может быть index.html это просто держит:

    <html>
    <body>
    <form method="post">
    <input type="text" id="text1"><br>
    <input type="text" id="text2"><br>
    <button name="button">Touch</button>
    </form>
    </body>

  2. Вам нужно будет заглянуть в язык под названием JavaScript. JavaScript позволит вам взять значения, введенные в текстовые поля, и отправить их в PHP через нечто, называемое Ajax.

    http://www.w3schools.com/ajax/ajax_intro.asp

    Короче говоря, Ajax — это способ взаимодействия вашего сайта с сервером и клиентом. Вы можете отправлять данные с клиента (вашей HTML-страницы) на ваш сервер (PHP) и обрабатывать данные там.

    Однако есть и другой вариант, вы можете использовать свой текущий код и добавить action приписать к вашему <form> пометить и перенаправить пользователя на страницу PHP, а затем получить данные с помощью $_POST как ты и хотел.

    Вот пример этого: http://www.w3schools.com/php/php_forms.asp

  3. После выполнения вышеуказанных шагов, будь то публикация Ajax или публикация формы, вы можете обрабатывать все свои значения в PHP.

0

По вопросам рекламы [email protected]