Швейцарский нож для сетей - netcat

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

Утилита netcat (или nc) должна быть в любом дистрибутиве, и даже в Knoppix она тоже есть. Если вдруг её нет, установка netcat проблем не составляет:

apt-get install netcat
Работать с ней очень просто, и на примере далее я покажу, как легко и просто передавать файлы при помощи nc. Идея netcat очень проста: он просто перенаправляет поток данных в порт сетевого устройства, а на другом конце поток перенаправляется в файл. Отсюда и название: NETcat - тот же cat, но сетевой. При передаче файлов следует первым запускать nc на сервере (куда будут передаваться данные), а потом уже с клиента (откуда передаются данные) пересылать файлы.


На стороне сервера (куда передаём данные):
Нужно запустить netcat так, чтобы он слушал определённый порт, и перенаправлял получаемый поток в файл. Вот так:
nc -l -p 3333 > file.txt
Это откроет на прослушивание порт 3333, и сохранит полученные данные в файл file.txt в текущем каталоге. При этом программа не вернёт управление консоли, и будет ждать, пока вы вручную завершите её.


На стороне клиента (откуда передаются данные):
Для этого передаём по конвейеру файл nc так:
cat file.txt | nc 192.168.1.1 3333
Это передаст файл file.txt на машину с IP-адресом 192.168.1.1, где уже запущен nc, слушающий порт 3333.

А кроме того
Можно с помощью nc устроить чат с пользователем на другой машине. Со стороны клиента просто пишете
nc 192.168.1.1 3333
и на том конце будет видно всё, что вы печатаете, в том числе кириллицу.


Ссылки:
Первоначально идея была любезно утянута отсюда, разбавлена вот этим и приправлена вот этим материалом.

10 комментариев: |высказаться!| RSS-лента дискуссии.|
librarian комментирует...

Ух-ты! А я тут понимаешь с шеллом и форвардингом портов огород горожу...

Так можно чаты какие нибудь устраивать, и даже целые конференции :)

Ivan A-R комментирует...

Сцылко только поправь http://iar.spb.ru/linux/network =))) Там ещё добавил как через tar и nc копировать много файлов за раз =)

Ну и ещё уточнение. Как ни странно, в некоторых дистах в дефолтную систему netcat невключён. В дебианистых системах можно поставить: apt-get install netcat

Roman Khimov комментирует...

Есть ещё, кстати, отличная штука под именем dog.

$ aptitude show dog

Вот она чуть-чуть по-другому, но умеет и так, и стандартным котом отрабатывать и ещё немного разного.

virens комментирует...

2 librarian пишет...
Ух-ты! А я тут понимаешь с шеллом и форвардингом портов огород горожу...
А у меня этот пост лежал почти год :-/ Буду выкладывать раритетные вещи :-)

Так можно чаты какие нибудь устраивать, и даже целые конференции :)
Конечно, без проблем.

2 Ivan A-R пишет...
Сцылко только поправь
Спасибо, поправил.

Ну и ещё уточнение. Как ни странно, в некоторых дистах в дефолтную систему netcat невключён.
В Дебиане и Кноппиксе оно есть. В Дебиане правда не поставлено по умолчанию.

2 Roman Khimov пишет...
Есть ещё, кстати, отличная штука под именем dog.
Спасибо, Роман! Гляну.

Ivan A-R комментирует...

virens, вот и я про то, что не поставлено =) Утром торопился писал. Так что слог оставляет желать лучшего =))) В бубунтах разномастных вроде тоже надо ставить.

VecH комментирует...

А как я пойму что файл закончил отправку на клиенте?

а то отправку запустил, а она так и висит

Ivan A-R комментирует...

vech, если по_man_ить netcat то найдётся ключик -q

virens комментирует...

2 Ivan A-R пишет...
virens, вот и я про то, что не поставлено =)
Про то, как поставить netcat, я написал позже.

В бубунтах разномастных вроде тоже надо ставить.
За убунты не в ответе, но в Debian надо ставить.

Кстати, про ключик -q надо будет добавить в пост.

Shurik комментирует...

Быстрый способ переливать файлы:

откуда:
cd /path/to/directory
find|cpio -ov|nc -l -p 9999

куда:
cd /path/to/directory
nc адрес 9999|cpio -idmv

можно добавить сжатие по gzip/gunzip, но если сеть 100 Мбит/с - выгоды обычно не бывает

вместо cpio можно использовать tar, но в нём я столкнулся с проблемой - криво копируются симлинки, указывающие на абсолютный путь

athlon128 комментирует...

это гениальная штука. спасибо за пост и комменты.

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.