Эта строка также будет работать как эквивалент:

аюсь поиграть с netcat, чтобы узнать больше о том, как работает HTTP. Я хотел бы написать некоторые из них в bash или Perl, но я наткнулся на камень преткновения в начале моего тестирования.

Если я запускаю netcat прямо из приглашения и печатаю запрос HEAD, он работает, и я получаю заголовки для веб-сервера, который я проверяю.

Это работает:

    [romandas@localhost ~]$ nc 10.1.1.2 80
    HEAD / HTTP/1.0

    HTTP/1.1 200 OK
    MIME-Version: 1.0
    Server: Edited out
    Content-length: 0
    Cache-Control: public
    Expires: Sat, 01 Jan 2050 18:00:00 GMT

    [romandas@localhost ~]$

Но когда я помещаю ту же информацию в текстовый файл и передаю ее в netcat через канал или через перенаправление, при подготовке к написанию сценариев, она не возвращает заголовки.
Текстовый файл состоит из запроса HEAD и двух новых строк:

HEAD / HTTP/1.0

Отправка той же информации черезэхо или жеPrintf тоже не работает.

$ printf "HEAD / HTTP/1.0\r\n"; |nc -n 10.1.1.2 80
$ /bin/echo -ne 'HEAD / HTTP/1.0\n\n' |nc 10.1.1.2 80

Есть идеи, что я делаю не так? Не уверен, что это проблема bash, проблема с эхом или проблема с netcat.

Я проверил трафик через Wireshark, и успешный запрос (набранный вручную) отправляет завершающий символ новой строки во втором пакете, тогда как методы echo, printf и text file сохраняют символ новой строки в том же пакете, но я не уверен, что вызывает это поведение.

Ответы на вопрос(5)

Ваш ответ на вопрос