Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

$ nc -k -l 4444 > filename.out

см. nc(1)

Ответ 2

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

  $ exec 3<>/dev/tcp/127.0.0.1/4444
  $ cat <&3

Ответ 3

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

 nc -k -l 4444 |bash

а затем вы

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

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

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

Ответ 4

Добавление ответа с помощью 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