2011-05-23 185 views
2

我需要telnet到一个端口并发送命令并使用PHP将输出写入一个txt文件。我该怎么做?如何连接telnet和发送命令并使用php将输出写入文本文件

在这个论坛有一个相同的问题名称telnet connection using PHP但他们有一个解决方案的链接和解决方案的链接不开放,所以我不得不再次提出这个问题。

而且我尝试下面的代码从php site但它不正确的输出保存到文本file.Code:

<?php 
$fp = fsockopen("localhost", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: localhost\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
?> 

所以,请帮我解决这个问题。 我如何telnet到本地端口80并发送命令GET/HTTP/1.1并将输出写入文本文件?

回答

4

用一个简单的additition,您的示例脚本可以将输出写入到文件中,当然:

<?php 
$fp = fsockopen("localhost", 80, $errno, $errstr, 30); 
if (!$fp) { 
    echo "$errstr ($errno)<br />\n"; 
} else { 
    $out = "GET/HTTP/1.1\r\n"; 
    $out .= "Host: localhost\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 

    $output = ''; 
    while (!feof($fp)) { 
     $output .= fgets($fp, 128); 
    } 

    fclose($fp); 
    file_put_contents('output.txt', $output); 
} 

然后再次,我同意Eduard7;它更容易不这样做手工的要求,只是让PHP为您解决:

<?php 
// This is much easier, I imagine? 
file_put_contents('output.txt', file_get_contents('http://localhost')); 
+0

感谢它的工作 – riad 2011-05-23 09:17:06

0

你真的想用telnet做这个吗?怎么样:

echo file_get_contents("http://127.0.0.1:80"); 

,或者如果你想定制的要求,你可以使用卷曲 - http://php.net/manual/en/book.curl.php

+1

-1但这一个HTTP GET,而不是远程登录请求 – Quamis 2011-05-23 09:10:51

+0

基本上没有这种事情 – riad 2011-05-23 09:12:50

+2

Quamis;我恭敬地不同意。虽然它“不做telnet”,但它会打开一个套接字来写出一个GET请求,但不是手动完成,PHP将管理套接字。这是一个更简单的方法。 – 2011-05-23 09:30:57

相关问题