cat в Linux – всё что нужно знать

Почти в любом дистрибутиве Linux есть маленькая незаметная утилита netcat , или просто nc . Эта программа может создавать TCP-сокеты либо в режиме сервера для ожидания соединения, либо в режиме клиента для подключения к серверу. А по правде сказать, для netcat вовсе не играет роли, собираетесь ли вы использовать его как сервер или как клиент – его работа заключается только в том, чтобы собрать данные с stdin и передать на указанный сетевой адрес.

Утилита netcat

Копирование директорий между хостами с помощью netcat

Как перенести каталог с одного хоста на другой?

— Можно использовать ssh, но при этом весь трафик будет сжиматься, что приведёт к некоторым потерям производительности.

— Когда такое копирование производится по общедоступным сетям, правильнее использовать ssh, но внутри одного сегмента можно выполнить эту операцию и с помощью netcat. Для этого:

На стороне получателя данных переходим в каталог, в который необходимо разместить полученные данные, и выполняем такую команду:

nc -l 12345 | tar xvf —

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

tar -cf — ./our_directory/ | nc target_host 12345

Где:

12345 — номер порта, по которому будет производиться обмен данными;

target_host — ip-адрес или hostname компьютера, на который будут передаваться данные.

Если хочется следить за статусом процесса, то можно воспользоваться утилитой pv, почитать о ее использовании можно тут PV

 

Обновлено 21:28

Введение в терминал Linux

Моя бабушка называет любой терминал «терминатором», что добавляет антуража. На самом деле терминал (bash) — это всего лишь командная строка с гораздо более широким набором функций, если сравнивать с Windows. Почти любое действие можно выполнить командой из терминала, но далеко не любое действие можно выполнить через окружения пользователя.

В этом и заключается преимущество терминала Linux — по сути из него можно полностью управлять системой, без необходимости окружения пользователя (графического интерфейса). На самом деле нередко серверы так и работают — черный экран, командная строка и все функции под рукой. В статье команды будут сгруппированы по функциям, а не по частоте использования, это связано с удобством восприятия и понимания.

Статья рассчитана на новичков и написана таким же новичком, в этом нет ничего зазорного — все когда-то начинали с нуля. Любое сообщество существует только до тех пор, пока есть приток новых участников.

Список команд в данной статье не является полным списком команд Linux. Во-первых, команд слишком много, чтобы перечислять их все, во-вторых, новичкам они не нужны, а профессионалы уже помнят их наизусть. Однако, не стоит расстраиваться, если у вас не получается запомнить команды — запоминание приходит с практикой. Чем чаще вы пользуетесь теми или иными командами, тем скорее вы их запомните.

Просмотр файлов с помощью cat в Linux

Для просмотра файла просто наберите: #cat

[[email protected] ~]# cat new_file это новый файл

1234 [hc@host~]# cat new_fileэтоновыйфайл

Можно вывести с номерами строк:

[[email protected] ~]# cat -n new_file 1 это 2 новый 3 файл

1234 [hc@host~]# cat -n new_file 1 это 2 новый 3 файл

Можно просмотреть содержимое нескольких файлов.

[[email protected] ~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Это старый файл

12345 [hc@host~]# cat -n new_file old_file 1 это 2 новый 3 файл 4 Этостарыйфайл
Читайте также:  Создание загрузочной флешки linux mint в windows

Обратите внимание, что содержимое выводится единым массивом данных, что хорошо видно по тому, что содержание второго файла вывелось строкой под номером 4 – нумерация не началась заново при выводе этого файла. Т.е. cat , как это и заложено в ее названии, склеила файлы.

Оператор NOT (!)

Оператор NOT (!) очень похож на оператор «кроме«. Эта команда выполнит все, кроме предоставленного условия. Чтобы понять как это работает, создайте каталог «sedicomm» в вашем домашнем каталоге и перейдите к нему с помощью команды «cd«.

mkdir sedicomm cd sedicomm

Затем создайте несколько типов файлов в папке «sedicomm».

touch

Смотрите, мы создали все новые файлы в папке «sedicomm».

ls

Теперь удалите все файлы, за исключением файла «html»одновременно, умным способом.

rm -r !(*.html)

Просто чтобы проверить, последнее исполнение. Перечислите все доступные файлы с помощью команды ls.

ls

Отобразить конец строки и символы табуляции

Вы можете сделать так, что cat будет отображать символ $ в конце каждой строки. Обычно, считывая файл, пользователи могут найти белые пробелы в конце каждой строки, используя опцию -e.

$ cat -e

Используйте опцию -T для отображения символов табуляции. Она отобразит ^I для символов табуляции.

$ cat -eT

Считывать содержимое до заданного образца

Когда вы считываете из стандартного ввода, вы можете задать прекратить чтение, когда строка будет содержать заданный образец.

$ cat << EOF > line one > line two > EOF line one line twoСвязанные статьи:

  • Мы скоро начнём (50%)
  • Как установить Kingsoft Office на Linux (50%)
  • Как установить .deb файл с зависимостями (50%)
  • Как переименовать группу файлов (50%)
  • Как узнать, какой дистрибутив и версия Linux запущена? (50%)
  • Ошибка в WSL (Kali Linux, Ubuntu) «sleep: cannot read realtime clock: Invalid argument» (РЕШЕНО) (RANDOM — 50%)
Читайте также:  Как настроить подключение через прокси-сервер в ubuntu

Передача статической веб-страницы по аналогии с веб-сервером

Выполните приведенную ниже команду для запуска веб-сервера, который будет передавать веб-страницу с именем клиентам, соединяющимся с портом 8000.

$ while true; do nc -lp 8000 < ; done

Теперь проверьте доступность веб-страницы, перейдя с помощью веб-браузера по адресу: http://:8000/ . Обратите внимание на то, что для использования стандартного порта веб-сервера под номером 80 вам придется запустить nc с привилегиями пользователя root следующим образом:

$ while true; do sudo nc -lp 80 < ; done

Запуск «удаленной командной оболочки», позволяющей выполнять произвольные команды на удаленном узле в процессе работы с локальным узлом

На удаленном узле ():

$ nc -lp 5000 -e /bin/bash

На локальном узле:

$ nc 5000

После выполнения приведенной выше команды на локальном узле вы сможете выполнять любые команды на удаленном узле посредством окна терминала локального узла. Команды будут выполняться на удаленном узле, при этом вывод этих команд будет появляться в окне терминала локального узла. Данный подход может использоваться для создания бэкдора на удаленном узле.

Очистка от SSL

Предположим, вам нужно подключиться к серверу IMAP, который требует SSL, но ваш почтовый ридер не поддерживает SSL. Ncat может выступать в качестве зашифрованного моста для соединения клиента и сервера. Вы подключите почтовый клиент к локальному порту, и Ncat перенаправит зашифрованный трафик на сервер. Вот как подключить IMAP (порт 143) на локальном хосте к IMAP через SSL (порт 993) на

Как только это произойдёт, дайте указание почтовому клиенту подключиться к серверу IMAP на локальном хосте.

Этот приём работает для протоколов, которые передают трафик строго между двумя хостами. Он не работает хорошо для HTTP, потому что HTTP обычно знает имена хостов и часто включает в себя несколько хостов.