Подключение к SSH через функцию exec () PHP. - PullRequest
0 голосов
/ 16 февраля 2010

В настоящее время я пытаюсь выяснить, как подключиться к другому серверу через SSH, используя функции оболочки PHP. У меня есть сайт, где я должен передать данные из PHP в пользовательскую программу командной строки, а затем вернуть результат. На старом сервере, который я использовал, это было возможно с помощью функции exec ():

$cmd = '/path/to/custom/program "arg1", "arg2", "arg3"';
exec($cms, $output);

$ output, конечно, будет содержать данные, которые вернула моя программа.

Сейчас я нахожусь в положении, когда хост не позволяет мне запускать мою пользовательскую программу. Однако функции оболочки PHP все еще доступны. Хост предложил мне установить PHP на SSH на другом сервере, запустить команды, которые мне нужны, и затем вернуть результат. Это кажется невероятно отсталым, но что я знаю?

Мой конкретный вопрос относится к тому, как мне поступить при передаче информации для входа в команду exec (). Например, когда я подключаюсь к любому SSH-серверу вручную, я добавляю:

ssh myserver.com -l myusername

И тогда я вижу:

myusername@myserver.com's password:

Если бы я передал "ssh myserver.com -l myusername" в качестве команды exec (), как бы я тогда дал ему пароль? После этого, как я узнаю, что я должным образом аутентифицирован и подключен, чтобы я мог запустить команду для моей программы?

О, а также, у меня нет доступа к функциям ssh2 в PHP, и я не смог бы установить это расширение.

Ответы [ 3 ]

4 голосов
/ 16 февраля 2010

вы можете использовать ключи, чтобы обойти проблему с паролем.

http://pkeck.myweb.uga.edu/ssh/

0 голосов
/ 17 февраля 2010

Никогда не пробовал, но рассматривали ли вы основные функции PHP passthru () или system ().

Они похожи на exec ().

0 голосов
/ 17 февраля 2010

Вам необходимо двунаправленное взаимодействие с новым процессом из вашего PHP-кода - в этом случае proc_open (...) - единственная функция php, которую вы можете использовать для запуска ssh.

После этого - это просто вопрос написания кода для ожидания запросов и ответа на них.

Однако, есть реализация ssh, написанная на PHP, размещенная на phpclasses - хотя я понятия не имею, насколько она быстра / эффективна / надежна / совместима. Я подозреваю, что это не будет меньшим усилием, чем метод proc_open (), и возможно намного больше.

C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...