2010-09-19 3 views
1

Est-il possible d'exécuter des commandes shell sur un ordinateur distant (pas localhost)? Vous pouvez supposer que vous avez les informations de connexion d'un compte utilisateur sur la machine distante, ainsi que le nom d'utilisateur root distant, mot de passe et cPanel clé d'accès à distance pour les choses d'instance commeExécution de commandes shell à l'aide de PHP, par ex. shell_exec() etc., sur un hôte distant?

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

.

Répondre

1

Si vous voulez dire « un ordinateur distant » comme dans « pas l'ordinateur client », la réponse est un oui sans réserve; Les commandes exécutées via la fonction exec de PHP s'exécuteront sur le serveur Web.

Si vous voulez dire "pas le serveur web", la réponse est un oui légèrement brumeux. Vous pouvez seulement exécuter directement les commandes sur le serveur exécutant PHP. Cependant, ces commandes peuvent ensuite exécuter d'autres sur des machines distantes via des mécanismes tels que SSH. Ainsi, par exemple, si votre serveur Web a un accès ssh sans mot de passe à la machine distante (une très mauvaise idée), cela fonctionnera: exec('ssh otherhost someremotecommand');. La solution qui vous convient dépend de votre utilisation souhaitée.

0

Oui, et il n'est pas nécessaire de modifier le code pour le faire. Cependant, si votre serveur met PHP en mode sans échec (les plans d'hébergement mutualisés de moindre importance le font souvent), vous ne pourrez peut-être pas le faire.

Astuce: Vous pouvez utiliser ce raccourci pour obtenir la sortie d'une commande:

$output = `command here` 
1

Je sais que cette question est assez ancienne mais pour les téléspectateurs de cette question.

Vous pouvez également utiliser 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"); 

?> 
Questions connexes