2009-07-07 9 views
1

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

Вот мой сниппет:

$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 с консоли, я получаю целую строку на stdout, но если я попытаюсь перенаправить ее в другой файл, я получаю ту же проблему, что и выше.

ответ

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

попробуйте что-нибудь вдоль этих линий?

+0

Вы не отвечаете на вопрос - * как написать ответ на файл *. Сосредоточьтесь на этой части, чтобы дать полезный ответ. –

Смежные вопросы