从proc_open捕获控制台输出

时间:2009-07-07 12:58:01

标签: php telnet 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命令,我会在stdout上获取整个字符串,但如果我尝试将其重定向到另一个文件,我会得到与上面相同的概率。

1 个答案:

答案 0 :(得分:-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);

尝试这些方面的东西?