2015-08-04 2 views
-1

J'essaie de me connecter à un serveur dans mon code PHP via SSH (en utilisant la classe Net_SSH2), et d'exécuter un certain nombre de commandes sur le serveur distant.La commande fonctionne en SSH via MobaXterm, mais pas en SSH via PHP?

Le serveur distant sort bash: runmqsc: command not found.

La chose étrange est, que la même commande exacte est trouvée et fonctionnelle sur ce serveur, quand je SSH à l'aide de MobaXterm.

J'ai validé que le code utilise le nom d'hôte, l'utilisateur et le mot de passe corrects pour se connecter.

Des idées?

C'est ce que je fais en PHP:

$this->ssh = new Net_SSH2("myhost"); 
$this->ssh->login("myuser", "mypass"); 

$command = "runmqsc MyQmgr \n DEFINE QLOCAL(MY_QUEUE) \n end \n"; 
$this->ssh->exec($command); 
+2

Faites la Les scripts de démarrage du shell myuser définissent PATH, etc. pour que cela fonctionne? Parce que 'Net_SSH2' n'est peut-être pas en train de démarrer une session interactive qui les charge. –

+0

@EtanReisner Si c'est le cas, pourquoi cela fonctionne-t-il via MobaXterm? –

+0

Parce que ** commence ** une session interactive. –

Répondre

0

Vous avez probablement besoin de faire quelque chose comme ceci:

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

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

echo $ssh->read('[email protected]:~$'); 
$ssh->write("runmqsc MyQmgr\n"); // note the "\n" 
echo $ssh->read('[email protected]:~$'); // or whatever the prompt is - does runmqsc have it's own prompt? 
$ssh->write("DEFINE QLOCAL(MY_QUEUE)\n"); 
?> 

... etc ...