Захват вывода консоли из proc_open

Я использую proc_open для запуска сеанса telnet, подключающегося к серверной программе. Соединение в порядке, но когда я получаю ответ, я не могу сохранить всю строку в файле, так как она обрезается после некоторых символов.

Вот мой фрагмент:

$descriptorSpec = array( 0 => array( "pipe", "r" ),  
                         1.=> array( "file", $logPath, "w" ) );  
$process = proc_open( "telnet localhost 2323", $descriptorSpec, $pipes );  
fwrite( $pipes[0], "helo" . PHP_EOL );
fwrite( $pipes[0], "quit" . PHP_EOL );

Я также пробовал использовать netcat и exec:

exec( "echo \"helo quit\" | netcat localhost 2323 >> $logPath" );  

но у меня был такой же результат.

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


person Community    schedule 07.07.2009    source источник


Ответы (1)


$smtpConnect = fsockopen($server, 25, $errno, $errstr, 2)){
$smtpResponse = fgets($smtpConnect);
$logArray['connection'] = $smtpResponse;
echo $logArray['connection'];
fputs($smtpConnect, "EHLO LOCALHOST". "\n\r");
$smtpResponse = fgets($smtpConnect);

попробовать что-то в этом духе?

person deadanon    schedule 21.09.2012
comment
Вы не отвечаете на вопрос - как написать ответ в файл. Сосредоточьтесь на этом фрагменте, чтобы дать полезный ответ. - person random_user_name; 23.09.2012