Вас удивит: 6 крутых трюков с nc для Linux, о которых никто не пишет!

Linux mascot using a laptop with some multiplexer terminals around it.

Netcat хорошо известен сисадминам, но мало кто использует все его фишки в повседневной работе на Linux. Я решил разобраться в возможностях nc — и был реально поражён тем, сколько бытовых и рабочих задач он закрывает запросто.

6 Устанавливаем сетевые соединения

Начнём с самого очевидного — nc позволяет быстро создать прямое соединение по TCP или UDP между двумя компьютерами. Это база для большинства магии с netcat.

К примеру: у меня есть два Linux-компьютера, один на Ubuntu (он будет слушать входящие), другой на Linux Mint (он же клиент).

На сервере сперва запускаю прослушивание:

Ключ -l — режим ожидания, -p — определяет порт (в этом примере 12345, можете задать любой свободный). Теперь nc сидит и ждёт соединения.

На клиенте подключаюсь к серверу:

Вместо ip_address пишите IP-адрес вашей машины. Порт тот же, что и на сервере. У меня получилась такая команда:

Establishing a network connection between two machines using nc.

Теперь обе стороны могут и отправлять, и получать данные — канал двусторонний, всё как надо.

Чтобы соединяться по UDP, используйте ключ -u. На сервере запускаю:

На клиенте:

Establishing a UDP network connection between two machines using nc.

UDP — протокол по сути быстрый, но не гарантирует доставки каждого пакета: зато иногда это именно то, что надо.

5 Сканируем порты

nc — это ещё и бесплатный сканер портов! Можно одним махом проверить сразу несколько портов на сервере — и понять, что там открыто. Это реально незаменимо для быстрой диагностики проблем и поиска сетевых служб — не просто так netcat называют “швейцарским ножом” среди утилит.

Допустим, нужно узнать, какие TCP-порты доступны. На сервере запускаю nc в режиме слушания, как раньше.

Клиент сканирует диапазон портов:

Port scanning using the nc command.

Ключ -z включает “тихий режим” — соединения открываются без передачи данных, -v — выдаёт подробности. Диапазон может быть любым, я проверял 20-130.

ВАЖНО: сканировать можно только свои устройства или сервера с официальным разрешением! В других случаях это нарушение закона.

В моём опыте открытым оказался только порт 80. Проверять, какие порты доступны, можно и по UDP — просто добавьте -u.

4 Передача файлов

С помощью netcat можно перекидывать файлы прямо по сети без всяких FTP, SCP и Samba. Очень удобно для быстрой передачи, особенно если остальные способы недоступны. Например, нужно скинуть файл с Linux Mint на Ubuntu.

Файл test.txt уже есть, в нём, скажем: «File for testing nc file transfer.» Для начала на принимающей стороне запускаю nc, чтобы сразу всё принятое записывалось в файл:

На машине-отправителе просто отправляю содержимое через nc:

Transferring files between machines using the nc command.

Всё работает! Проверяю через ls — файл появился, cat — содержимое на месте. Хотите передать в обратную сторону? Просто переставьте команды местами.

3 Запуск простого веб-сервера

В пару строк с nc можно “собрать” мини-HTTP-сервер. Достаточно слушать определённый порт и отдавать “сырые” HTML-страницы при подключении. Конечно, до Apache или Nginx ему далеко — но для теста, отладки или обучения этого более чем достаточно.

Создаю html-файл (например, page.html) прямо на сервере — пусть это Ubuntu.

В файле: статусная строка HTTP, заголовок типа контента и сам HTML. Не забудьте: rn обязателен для разделения заголовков и тела!

Теперь запускаю nc, чтобы при каждом коннекте отдавался наш файл:

Цикл нужен, чтобы сервер не падал после первого подключения. Всё — ваша простенькая страница раздаётся на порту 8080. С клиента (у меня это Linux Mint) открываю браузер, захожу по нужному IP и порту — страница работает!

Creating a minimal web server using the nc command.

А если нужно проверить из консоли — curl покажет прямо HTML-код.

Creating a minimal web server using the nc command and fetching the content using curl.

2 Создание чата прямо в терминале

С nc можно устроить “живой” чат прямо между двумя терминалами: напечатал — и увидел на другом компе! Немного доработав команды, получаете мгновенный обмен сообщениями без мессенджеров и лишних программ.

Первый шаг — открываю nc на одной машине в режиме прослушивания:

На второй стороне подключаюсь как клиент:

Всё! Всё что введёте в одном окне, тут же появится на втором. Настоящий чат в консоли, без заморочек.

Creating a simple chat application using the nc command.

Мне для удобства понравилось добавлять имя пользователя к каждому сообщению — сразу видно, кто написал.

Реализовать легко: добавьте имя в echo в цикле и запустите на сервере:

Клиентская команда:

Simple chat application using the nc command with sender names appended.

Так просто определить, где чьё сообщение — особенно удобно, если собеседников больше двух!

1 Диагностика проблем с сетью

Ну и наконец, nc отлично помогает искать и решать сетевые проблемы. Если приложение вдруг “замолчало”, с помощью nc быстро поймёте, дело в соединении, сервере или правит firewall. Можно вручную тестировать порты, эмулировать сервер и смотреть, что реально приходит от сервисов.

Например, если программа не отвечает. Пробуем nc — подключаемся к нужному порту:

Если nc завис или выдал “Connection refused” — порт вряд ли открыт или его блокирует firewall.

Можно даже “поговорить” с сервером и посмотреть, как он реагирует на ваши запросы. Хотите проверить ответ локального HTTP-сервера? Пробуйте так:

Если всё хорошо — увидите HTTP-заголовки или всю страницу целиком. Крутой быстрый способ протестить веб-приложение без браузера.

А если надо узнать, что реально “шлёт” ваше приложение, nc можно запустить как фейковый сервер, поймать пакеты и увидеть всё вживую. За пару минут найдёте любые сетевые “узкие места” и быстро поймёте, что не так.

И это только начало! Netcat умеет ещё больше. Если заинтересовались — смело изучайте nc и другие мощные сетевые команды для Linux!

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!

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

Также подписывайтесь на нас в:

Алекс Бежбакин
Оцените автора
Добавить комментарий