Как сделать динамический ответ с Bash - PullRequest
0 голосов
/ 17 августа 2011

Я пытаюсь прослушать сокет в bash для получения динамического ответа.Я пытался сделать это nc -l 8088 -c``echo 'Request got, let's produce it', но опция -c устарела и не поддерживается.Затем я попытался перечислить порт, используя / dev / tcp: exec 3<>/dev/tcp/127.0.0.1/8088; cat <&3 Но у меня есть ошибка:

connect: Connection denied* 
line 1: /dev/tcp/127.0.0.1/8088: Connection denied*
line 2: 3: Wrong file descriptor*
  • Перевод с русского слово в слово

1 Ответ

1 голос
/ 17 августа 2011

Этот синтаксис, согласно странице управления Bash, предназначен для открытия соединения с существующим сокетом.Я не знаю, как создать сокет, используя только Bash.И ваша команда nc использует порт 8000, а не 8088.

[update] Хорошо, но вы также не используете ключ -p для установки порта.Не замечал этого раньше.

jcomeau@intrepid:~$ nc -l -p8088 -c 'echo bleah' &
[1] 4752
jcomeau@intrepid:~$ exec 3<>/dev/tcp/127.0.0.1/8088; cat <&3
bleah

Пример использования каналов приведен в нижней части этой страницы в пояснении к прокси: http://www.stearns.org/doc/nc-intro.v0.9.html,, надеюсь, вы сможете адаптировать его для своегонужно.

Почему бы не использовать inetd?Основная проблема использования netcat с Bash заключается в том, что я не могу придумать простой способ отправить ответ, потому что вы не знаете, к какому порту они подключались.Принимая во внимание, что inetd обрабатывает соединение tcp / ip для вас, позволяя вашему сценарию оболочки иметь дело только со stdin и stdout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...