2011-05-23 182 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

相關問題