Выполнение команд оболочки с использованием PHP, например, shell_exec () и т.д., на удаленном хосте? - PullRequest
1 голос
/ 19 сентября 2010

Можно ли выполнять команды оболочки на удаленном компьютере (не локальном)?Например, такие вещи, как

$output = shell_exec("unzip filename.zip");

Можно предположить, что у вас есть учетные данные для входа в учетную запись пользователя на удаленном компьютере, а также имя пользователя, пароль и ключ удаленного доступа cpanel для удаленного корневого пользователя.

Ответы [ 3 ]

1 голос
/ 19 сентября 2010

Если вы имеете в виду «удаленный компьютер», например, «не клиентский компьютер», то ответ будет безоговорочным «да»;Команды, выполняемые с помощью функции PHP exec, будут выполняться на веб-сервере.

Если вы имеете в виду «не веб-сервер», то ответ будет слегка опасным да.Вы можете только напрямую выполнять команды на сервере с PHP.Однако эти команды могут затем запускать другие на удаленных машинах с помощью таких механизмов, как SSH.Так, например, если ваш веб-сервер имеет ssh-доступ без пароля к удаленной машине (очень плохая идея), это будет работать: exec('ssh otherhost someremotecommand');.Какое решение подойдет вам, зависит от вашего желаемого использования.

1 голос
/ 23 февраля 2013

Я знаю, что этот вопрос довольно старый, но для зрителей этого вопроса.

Вы также можете использовать ssh2_exec. http://php.net/manual/en/function.ssh2-exec.php

<?php

$ip = 'ip_address'; 
$user = 'username'; 
$pass = 'password'; 

$connection = ssh2_connect($ip); 
ssh2_auth_password($connection,$user,$pass); 
$shell = ssh2_shell($connection,"bash");

?>
0 голосов
/ 19 сентября 2010

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

Подсказка: вы можете использовать это сокращение, чтобы получить вывод команды:

$output = `command here`
...