2016-04-07 4 views
1

Я хочу подключиться и выполнить команду на удаленном устройстве с SSH с моего сервера. Когда я пытаюсь выполнить команду в SSH-клиенте, таком как Putty, он работает безупречно. Но когда я пишу его с помощью PHP-скрипта, команда не будет выполнена. Есть идеи?PHP ssh2_exec() не работает

<?php 
    $host = "192.168.0.184"; 
    $user = "user"; 
    $password = "password"; 
    $cmd = "reboot"; 
    $ssh = ssh2_connect($host); 
    $sshLogin = ssh2_auth_password($ssh, $user, $password); 
    $sshExec = ssh2_exec($ssh, $cmd); 
?> 

В журнале устройств я могу видеть, что пользователь успешно прошел аутентификацию, но ничего больше.

+0

Любые ошибки, вызванные этим? – Machavity

+0

Нет, просто пустая страница ... должно быть что-то сказать с exec, потому что, как я писал, когда я иду в журнал устройства, я вижу, что SSH подключен и опротестован. – Logos

+0

Выполняйте несколько менее резкие команды (например, ls)? – Mike

ответ

0

Я решил проблему с этим кодом ... использовал интерактивную оболочку со сном после команды. И работает нормально.

<?php 
     echo "SSH connection: "; 
     if (!([email protected]_connect("your_host"))) { 
       echo "[FAILED]<br />"; 
       exit(1); 
     } 
     echo "[OK]<br />"; 

     echo "Athetication: "; 
     if ([email protected]_auth_password($resource,"your_user","your_password")) { 
       echo "[FAILED]<br />"; 
       exit(1); 
     } 
     echo "[OK]<br />"; 

     echo "Shell: "; 
     if (!($stdio = @ssh2_shell($resource,"xterm"))) { 
       echo "[FAILED]<br />"; 
       exit(1); 
     } 
     echo "[OK]<br />"; 
     $command = "reboot\n"; 
     fwrite($stdio,$command); 

     sleep(1); 

     while($line = fgets($stdio)) { 
       flush(); 
       echo $line."<br />"; 
     } 

     fclose($stdio); 
?> 
Смежные вопросы