LINUX.ORG.RU

tcp-ip на bash

 ,


2

4

Такой вопрос: можно ли на bash написать простенький tcp/ip стек?
Дела в том, что в утилите socat есть опция INTERFACE.
Работает это примерно так:

ip link add dev std0 type dummy
socat INTERFACE:std0 - # Вывести данные на stdout

ip link add dev sda0 type dummy
socat INTERFACE:sda0 /dev/sdX # Передача данных через sata (на действуйщих системах системах не выполнять, опасная комманда)

ip link add dev stcp0 type dummy
socat INTERFACE:stcp0 EXEC:simpletcp.sh # Отправить пакеты скрипту

ip link add dev pty0 type dummy
socat INTERFACE:pty0 PTY,link=/dev/ttyV0 # Передача данных через sata (на системах не выполнять, опасная комманда)

★★★★★

Последнее исправление: ne-vlezay (всего исправлений: 1)

Можно.
И?

Deleted
()
Ответ на: комментарий от slowpony

Я знаю человека, у которого есть действующий веб-сервер и сайт на баше.

Мне интересно, как он реализовал прослушивание порта на баше.

Deleted
()
Ответ на: комментарий от Harald

На баше даже обычные админские скрипты длиннее пары строк это косой говнокод на 146%.

anonymous
()
Ответ на: комментарий от Deleted

Душевнобольной хотя бы понимает, что спасает мир от рептилоидов

anonymous
()
Ответ на: комментарий от ashot

Попробуй на пистоне без библиотек

Кхм, это же тривиально, говнокодеры только так и делают.

anonymous
()
Ответ на: комментарий от ashot

Библиотеки - часть языка, в отличие от посторонних утилит, которых может и не быть.

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

Deleted
()
Ответ на: комментарий от ashot

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

anonymous
()
Ответ на: комментарий от ashot

Вообще надо покурить тему с башем. На awk реализуется:

awk 'BEGIN{s="/inet/tcp/80/0/0";"pwd" |& getline;r=$0;while((s |& getline) > 0){gsub(/[\r\n]/,"");if($0 ~ /^\s*$/){c="cat " r path;printf "HTTP/1.0 200 OK\r\n\r\n" |& s;while((c |& getline) > 0){print |& s}close(c);close(s)}else if($0 ~ /HTTP/){print;path=$2}}}'
Что такое /inet/tcp/80/0/0 ???

Deleted
()
Ответ на: комментарий от ashot

Они не нужны для написания программ, если ты не ядрописатель.

anonymous
()
Ответ на: комментарий от Deleted

Поддерживаю. Тролль что надо, к тому же шарит больше многих здешних.

// это скорее обращение к модерам, чтоб не вытравливали самородков.

Deleted
()
Ответ на: комментарий от anonymous

Меня интерисует работа с протоколом напрямую (на уровне IP). Чтобы у этого скрипта был свой ip адрес.

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ashot

Без nc/socat выходит никак. Кстати, где-то видел (не найду сейчас) форк netcat только secure. Сертификаты, шифрование умел и т.д. в отличии от nc

Deleted
()
Ответ на: комментарий от Deleted

Без nc/socat выходит никак. Кстати, где-то видел (не найду сейчас) форк netcat только secure.

Чтобы потом сделать на bash-е логику сервера и получить кривой, малофункциональный, тормозной, зачастую дырявый веб-сервер? :)

vodz ★★★★★
()
Ответ на: комментарий от vodz

Тут вопрос можно или нет. А тормозной и дырявый это уже не нашей совести.

Deleted
()
Ответ на: комментарий от anonymous

Это видели не раз, но там тоже nc

Deleted
()
Ответ на: комментарий от Black_Shadow

провайдер модифицировал команду

ох, с трудом сдержал смех

Dred ★★★★★
()
Ответ на: комментарий от anonymous

Да видел. И что не так? Он полноценный и быстрый? Про дырявый сразу не скажешь, но оно как-бы без первых двух и нет смысла выискивать.

vodz ★★★★★
()
Ответ на: комментарий от ananas

Нет, я собираюсь написать простой tcp/ip стек, и хочу узнать, на сколько это возможно именно на bash.

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ananas

Это не стек скрипта. Это стек операционной системы. Меня интерисует именно стек в самом скрипте.

ne-vlezay ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.