Как отформатировать вывод PHP SSH2 read()?

Я пытался отформатировать вывод метода SSH2->read(). Я попытался использовать ANSI.php, следуя http://phpseclib.sourceforge.net/ssh/examples.html#top

Мой код

<?php
include('Net/SSH2.php');
include('File/ANSI.php');
$ssh = new Net_SSH2('10.106.240.212');
$ssh->login('Administrator', 'Nbv12345') or die("Login failed");
$ansi = new File_ANSI();

$ssh->enablePTY();
$ssh->exec("powershell.exe\n");
$ssh->setTimeout(2);
echo $ssh->read();
$ssh->write("ls\n");
echo $ssh->read();
?>

Вывод заполнен символами ANSI и не содержит результатов 'ls'

(B)0[?7l[H[J[1;1HWindows PowerShell[2;1HCopyright (C) 2013 Microsoft Corporation. All rights reserved.[4;1HPS C:\Users\Administrator> (B)0[?7l[H[J[1;1H [2;1H [3;1H [4;1H [5;1H [6;1H [7;1H [8;1H [9;1H [10;1H [11;1H [12;1H [13;1H [14;1H [15;1H [16;1H [17;1H [18;1H [19;1H [20;1H [21;1H [22;1H [23;1H [24;1H [1;1HMicrosoft Windows [Version 6.3.9600][2;1H(c) 2013 Microsoft Corporation. All rights reserved.[4;1HC:\Users\Administrator>ls[5;1H

Мне нужно что-то вроде этого. Это даже не близко:введите здесь описание изображения

Как я могу отформатировать это?


person GP cyborg    schedule 17.10.2014    source источник


Ответы (1)


То, что вы инициализируете класс, не означает, что вы включаете его, лол. Попробуй это:

<?php
include('Net/SSH2.php');
include('File/ANSI.php');
$ssh = new Net_SSH2('10.106.240.212');
$ssh->login('Administrator', 'Nbv12345') or die("Login failed");
$ansi = new File_ANSI();

$ssh->enablePTY();
$ssh->exec("powershell.exe\n");
$ssh->setTimeout(2);
$ansi->appendString($ssh->read());
$ssh->write("ls\n");
$ansi->appendString($ssh->read());
echo $ansi->getScreen();
?>

т.е. оберните все свои вызовы $ssh->read() в $ansi->appendString(), а затем выполните $ansi->getScreen(). Или, может быть, только обернуть $ssh->read() после $ssh->write("ls\n") в $ansi->appendString(). Вы могли бы сделать $ansi->getHistory() тоже.

person neubert    schedule 17.10.2014
comment
Эй, Нойберт, я уже пробовал. ANSI.php не может разобрать несколько символов, таких как (B и)0[, и на выходе будет только подсказка. Ничего больше! Notice: (B unsupported in C:\wamp\www\PT_TEST_FRAMEWORK\php\phpseclib\File\ANSI.php on line 434 - person GP cyborg; 20.10.2014
comment
Не могли бы вы опубликовать полный вывод (до запуска через File_ANSI) по ссылке pastebin.com? - person neubert; 20.10.2014