2016-04-07 25 views
1

Sunucudan SSH ile uzak bir cihaza bağlanıp komut çalıştırmak istiyorum. Putty gibi SSH istemcisindeki komutu denediğimde, kusursuz çalışıyor. Ama bir PHP betiğini kullanarak yazdığımda, komut yürütülmeyecek. Herhangi bir fikir?PHP ssh2_exec() çalışmıyor

<?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); 
?> 

Cihaz günlüğünde, kullanıcının başarıyla doğrulandığını görebiliyorum ancak başka bir şey yok.

+0

Bu işlemle oluşan hatalar var mı? – Machavity

+0

Hayır, sadece boş sayfa ... exec ile birşeyler olmalı, çünkü yazdığım gibi, cihaz günlüğüne gittiğimde, SSH'nin bağlı ve desteklendiğini görebiliyorum. – Logos

+0

Biraz daha az zorlu komutlar (örn. Ls) çalışır mı? – Mike

cevap

0

Bu kodla sorunumu çözdüm ... komuttan sonra uyku ile etkileşimli kabuk kullanıldı. Ve iyi çalışıyor.

<?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); 
?>