Я новичок в мире 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, поэтому я просто старался изо всех сил самостоятельно.
Итак, с учетом сказанного, если у кого-либо есть понимание, полезные ссылки, советы, что-нибудь — это будет с благодарностью!
Смотрите этот пост: Другой пост
<?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 вызывать серверные программы
Я постараюсь объяснить шаги, которые вам нужно пройти, чтобы выполнить то, что вы хотите.
Вы хотите, чтобы 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>
Вам нужно будет заглянуть в язык под названием 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
После выполнения вышеуказанных шагов, будь то публикация Ajax или публикация формы, вы можете обрабатывать все свои значения в PHP.