Создаем сокеты и серверы за считанные секунды

В Linux с сокетами (сетевыми соединениями) можно работать как с файлами. Например, зная, что на порту 3333 компьютера с IP-адресом 192.168.0.200 ждет запросов некий сервер, можно послать ему информацию точно так же, как мы записали бы ее в обычный файл:

echo 'Hello, Mtaalamu!' > /dev/tcp/192.168.0.200/3333

Может случиться так, что на компьютере отсутствует псевдоустройство /dev/tcp (или /dev/udp). В таком случае его легко создать командой:

mknod /dev/tcp c 30 36

(от имени корневого пользователя, конечно же).

Может показаться, что это всё абстрактные рассуждения, которые никогда не пригодятся. Что это, например, за гипотетический сервер, который принимает странные фразы типа 'Hello, Mtaalamu!'? Да ничего гипотетического, такой сервер можно создать за считанные секунды с помощью команды netcat (сокращенно nc):

nc -l -p 3333

— и вот уже на вашем хосте ждет входящей информации сервер.


Пошлем на него текст вышеописанным способом:


Как видим, сервер отреагировал как и положено, вывел информацию на экран и выключился:


У этой технологии широкие возможности по решению сиюминутных админских проблем. Вот, например, как перебросить файл с компьютера на компьютер. На принимающем хосте запускаем

nc -l -p 3333 > /tmp/test.txt


На отправляющем:
cat test.txt > /dev/tcp/192.168.2.2/3333


Поскольку шифрование в этой схеме отсутствует, работает она быстрее, чем копирование по ssh. Безопасность же гарантирует то, что порт открывается временно, номер его можно назначить непредсказуемым образом и по окончании операции он автоматически закрывается.
  • +13
  • 12 августа 2010, 00:04
  • yababay

Комментарии (3)

RSS свернуть / развернуть
+
0
Классно!
Даже и не знал что есть такая команда и устройство /dev/tcp
avatar

Gangsta

  • 12 августа 2010, 08:59
+
0
Вот она — глубина глубин! Тут и польза обьявилась !
avatar

Markony

  • 12 августа 2010, 17:11
+
0
нравится мне идея линукса — написал и оно работает. да так работает что всем на зависть.
avatar

FREExLOADER

  • 12 августа 2010, 18:28

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.