LINUX.ORG.RU

[SHELL] чтение из сокета (netcat)

 


0

0

Необходимо из скрипта читать и записывать в файл данные получаемые от сервера. Сервер перед отправкой данных требует подписки. 
Т.е. протокол такой
to server> REQUEST DATA1
to server> REQUEST DATA2
from server> DATA DATA1
from server> DATA DATA2
...
from server> DATA DATA1
from server> DATA DATA2
...

Пробовал прикрутить netcat, но он получает EOF из STDIN обрывает соединение. т.е ни 
echo "request_string" | netcat host port > out
ни
netcat host port < file_reqest > out
не работают.

Можно ли что-нибудь сделать используя стандартные утилиты ?
Самому писать клента на С (а других языков я толком не знаю) не хочется.



★★

может я чего-то не понимаю, но по моему тебе нужна конструкция вида:

mkfifo /tmp/my_fifo

{
    echo hahaha
    read LINE
    echo blahblahblah
    read LINE
    while read LINE; do ... done
} < /tmp/my_fifo | netcat host port > /tmp/my_fifo

rm -f /tmp/my_fifo

dilmah ★★★★★
()

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

видимо придется писать простенького клиента.

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

ну вот смотри, разговариваю с сендмейлом:

# mkfifo /tmp/fff

# { read LINE; echo XXX$LINE > /tmp/resp; echo HELO flam; read LINE; echo YYY$LINE >> /tmp/resp; echo QUIT; read LINE; echo ZZZ$LINE >> /tmp/resp; } < /tmp/fff | netcat chup 25 > /tmp/fff

# cat /tmp/resp
XXX220 chup.gado ESMTP Sendmail 8.13.5.20060308/8.13.3; Tue, 15 Aug 2006 20:01:44 +0400 (MSD)
YYY250 chup.gado Hello flam.gado [192.168.0.11], pleased to meet you
ZZZ221 2.0.0 chup.gado closing connection

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

Туплю. Действительно все работает. Спасибо.

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