2014-10-23 4 views
1

아래 코드가 작동하면 SSH 서버에 연결된 사용자 이름을 완벽하게 반환합니다. 직접 명령을 보낼 수있는 일종의 대화 형 셸을 만드는 것이 가능합니까? 예를 들어 Mac의 검은 색 터미널 창과 같습니다. 터미널 창 너비와 높이를 지정할 수있는 ssh2_shell 함수에 대한 설명서를 보았지만 제대로 작동하지 않습니다.대화 형 ssh2 터미널 창 만들기

$server['ip'] = "127.0.0.1"; 
$server['sshport'] = 22; 
$server['user'] = "myUsername"; 
$server['pw'] = "myPassword!"; 

$command = "whoami"; 

if($ssh = ssh2_connect($server['ip'], $server['sshport'])) { 
    if(ssh2_auth_password($ssh, $server['user'], $server['pw'])) { 
     $stream = ssh2_exec($ssh, $command); 
     stream_set_blocking($stream, true); 
     $data = ""; 
     while($buffer = fread($stream, 4096)) { 
      $data .= $buffer; 
     } 
     fclose($stream); 
     print $data; 
    } else { 
     echo "User or password is incorrect!"; 
    } 
} else { 
    echo "Could not connect to the ssh server!";  
} 

답변

2

슬프게도 libssh2로는 불가능하다고 생각합니다.

http://phpseclib.sourceforge.net/ssh/examples.html#top

예 : 바로, 그것은한다면

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

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

$ansi = new File_ANSI(); 

$ansi->appendString($ssh->read('[email protected]:~$')); 
$ssh->write("top\n"); 
$ssh->setTimeout(5); 
$ansi->appendString($ssh->read()); 
echo $ansi->getScreen(); // outputs HTML 
?> 
+0

난 그렇게 하나 생각하지 않는다, 그것은 뭔가 될 것 내가 아는 PHP에서 그 일을하는 유일한 방법은 phpseclib을 사용하는 것입니다 ? phpseclib를 살펴 보겠습니다. – Beeelze

+0

동적으로 만들 수 있습니까? Enter 키를 누를 때 아약스 요청을하는 것과 같은가? – Beeelze