Простой Socket Server в Bash? - PullRequest
       6

Простой Socket Server в Bash?

68 голосов
/ 19 января 2011

Есть ли способ быстро привязаться к порту TCP / IP-адресу и просто распечатать всю информацию в STDOUT?У меня есть простое решение для отладки, которое записывает вещи в 127.0.0.1:4444, и я хотел бы иметь возможность просто связать порт из bash и распечатать все, что встречается.Есть ли простой способ сделать это?

Ответы [ 4 ]

102 голосов
/ 19 января 2011
$ nc -k -l 4444 > filename.out

см. nc(1)

45 голосов
/ 20 января 2011

Только потому, что вы спросили, как это сделать в bash, хотя netcat ответ очень действителен:

  $ exec 3<>/dev/tcp/127.0.0.1/4444
  $ cat <&3
10 голосов
/ 25 июня 2015

Это работает так, как вы ожидаете:

 nc -k -l 4444 |bash

, а затем вы

echo "ls" >/dev/tcp/127.0.0.1/4444

, тогда вы увидите листинг, выполненный bash.

[Краткое предупреждение по безопасности]
Конечно, если вы оставите на своем компьютере нечто подобное, у вас будет широко открытый шлюз для всех видов атак, потому что команды могут отправляться с любой учетной записи пользователя на любом хосте в вашем компьютере.сеть.Это не обеспечивает никакой безопасности (аутентификация, идентификация) и отправляет все передаваемые команды в незашифрованном виде по сети, поэтому им очень легко злоупотреблять.

4 голосов
/ 21 августа 2017

Добавление ответа с использованием ncat, на который @Freedom_Ben ссылается:

ncat -k -l 127.0.0.1 4444

и объяснение параметров от man ncat:

-k, --keep-open            Accept multiple connections in listen mode
-l, --listen               Bind and listen for incoming connections
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...