2014-09-18 2 views
2

웹 브라우저에서 ssh 출력을 표시하는 방법을 연구 중입니다. 내가 가지고있는 셸 스크립트는 grep 인수와 함께 tail -f/var/log/syslog를 수행하는 스크립트입니다.PHP linux tail -f with SSH2

이제이 쉘 스크립트를 호출하여 실시간으로 반환 된 데이터를 표시하고 싶습니다. 내가 가지고있는 것은 PHP 함수

public function siptrace($num) { 

if(is_numeric($num)) { 

    if($ssh = ssh2_connect('127.0.0.1', 3972)) { 
     if(ssh2_auth_password($ssh, 'user', 'password')) { 
      $stream = ssh2_exec($ssh, 'script '); 
      stream_set_blocking($stream, true); 
      $data = ''; 
      sleep(1); 
      while($line = fgets($stream)) { 
       flush(); 
       echo $line . "<br>"; 
      } 
     } 
    } 

} 

}

나는 그런 ls 등과 같은 간단한 명령을 실행하여 연결을 확인한를 호출하는 아약스 요청입니다. 하지만 지금은 데이터를 실시간으로 grep하려고 할 때 아무 것도 반환하지 않습니다. Ajax 호출 로딩과 로딩을 볼 수 있습니다. while과 shell 구조 때문에 수행해야합니까?

아약스

  $(document).ready(function() { 

       $('#sub').click(function() { 

        $.ajax({ url: 'load.php?trace='+$('#num').val(), success:function(data){ 

        } }); 

       }); 

      }); 

있습니까 내 코드와 아무 잘못 알았어 누구?

답변

1

대신을 시도해보십시오

$ssh = new Net_SSH2('127.0.0.1', 3972); 
$ssh->login('user', 'password'); 
$ssh->setTimeout(2); 
$ssh->enablePTY(); 
echo $ssh->exec('script '); 

phpseclib, a pure PHP SSH2 implementation를 사용하는. libssh2보다 더 잘 작동 할 수 있습니다.