Как на самом деле работает (echo 'text' ; cat file.txt ) > новый файл.txt? [дубликат]

Netcraft не знает историю операционной системы, так как некоторые веб-серверы могут быть настроены в целях безопасности, чтобы не предоставлять информацию/строки, которые не считаются уместными.

Например, веб-сервер Apache можно настроить в Debian в файле /etc/apache2/conf-available/security.confследующим образом:

ServerTokens Prod
ServerSignature Off

Конфигурация безопасности также обычно включается по умолчанию в Apache, иначе вам пришлось бы запустить:

sudo a2enconf security

Из комментариев к файлу:

ServerTokens: эта директива настраивает то, что вы возвращаете в качестве HTTP-ответа сервера
Заголовок. По умолчанию установлено значение «Полный», при котором отправляется информация о OS-Type и скомпилирован в модулях. Установите одно из: Полный | ОС | Минимальный | Минор | Майор | Товар
где Full передает больше всего информации, а Prod — меньше всего.

ServerSignature: При желании добавьте строку, содержащую версию сервера и виртуальный хост. имя на сгенерированные сервером страницы (внутренние документы об ошибках, FTP списки каталогов, вывод mod_status и mod_info и т. д., но не CGI сгенерированные документы или пользовательские документы об ошибках).
Установите «Электронная почта», чтобы также включить mailto: ссылку на ServerAdmin.
Установите одно из следующих значений: Вкл. | Выкл. | EMail

Что касается изменений IP-адресов, плавающий IP-адрес в течение длительного времени может означать, что он сменил интернет-провайдера/провайдера хостинга. Более частые изменения IP-адреса могут означать, что сайт размещен у домашнего интернет-провайдера или домашнего подключения, или это может означать, что имя веб-сервера работает с несколькими IP-адресами.

В качестве теста с ServerTokens Prodи ServerSignature Off:

$telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1

HTTP/1.1 400 Bad Request
Date: Fri, 09 Jun 2017 17:18:08 GMT
Server: Apache

Без этой конфигурации безопасности иначе было бы:

$telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET / HTTP/1.1

HTTP/1.1 400 Bad Request
Date: Fri, 09 Jun 2017 17:23:25 GMT
Server: Apache/2.4.10 (Debian) SVN/1.8.10 mod_jk/1.2.37 OpenSSL/1.0.2j
1
20.06.2018, 02:06
2 ответа

Оболочка разделяет эту командную строку на три части:

  1. (echo...)
  2. >
  3. file.txt

(стандартный )вывод --не какой-либо вывод stderr --из части #1 перенаправляется частью #2 в файл, указанный в части #3. Скобки в первая часть просто группирует весь вывод вместе для оператора перенаправления >.

1
27.01.2020, 23:15

При выполнении последовательности команд в интерактивной оболочке, например

echo xxx; cat file; ls; echo yyy

затем все выполняется последовательно и вывод отправляется на терминал.

Но если вы запустите эти команды в скобках (), будет создана новая не-интерактивная оболочка, и все будет выполняться внутри нее. Теперь, с >file.txtпосле (), вы перенаправляете весь вывод из этой скрытой подпрограммы -в файл.

4
27.01.2020, 23:15

Теги

Похожие вопросы