Как подключить telnet и отправить команду и записать вывод в текстовый файл с помощью php

Мне нужно, чтобы telnet к порту и отправить команду и записать вывод в текстовый файл с помощью PHP. Как я это делаю?

на этом форуме есть то же имя, что и у telnet-соединения с использованием PHP, но у них есть ссылка на решение, а ссылка на решение не открыта, поэтому я должен повторить вопрос.

Также я пробую приведенный ниже код с php сайта, но он не сохраняет правильный вывод в текстовый файл. Код:

<?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 к порту localhost 80 и отправить команду GET / HTTP/1.1 и записать вывод в текстовый файл?

2 ответа

Решение

Конечно, с помощью простого дополнения ваш пример сценария может записать вывод в файл:

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

Вы действительно хотите сделать это с помощью Telnet? Как насчет:

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

Или, если вы хотите настроить запрос, вы можете использовать cURL - http://php.net/manual/en/book.curl.php

Другие вопросы по тегам