Инструмент nc не показывает никаких результатов в busybox для локального хоста

Есть идеи, почему ничего не отображается при запуске образа контейнера на основе busybox? Проблема появляется при попытке подключиться к порту127.0.0.1/localhost.

      /app # nc -v 127.0.0.1 12345
/app # nc -v localhost 12345
/app # nc
BusyBox v1.35.0 (2022-08-01 15:14:44 UTC) multi-call binary.

Usage: nc [OPTIONS] HOST PORT  - connect
nc [OPTIONS] -l -p PORT [HOST] [PORT]  - listen
...

Я ожидаю увидеть, еслиncподключился или нет. В обычном Ubuntu команда выводит успешные или неудачные соединения, как показано ниже. В busybox я не знаю, что произошло, потому что ничего не выводится.

1 ответ

Большинство программ Linux/Unix ничего не сообщают, пока не произойдет какая-либо ошибка. Это связано с тем, что одни и те же программы часто используются для написания сценариев. См. https://en.wikipedia.org/wiki/Unix_philosophy . Кроме того, BusyBox по своей конструкции тихий и старается избегать больших текстов.

Но вы можете проверить код ошибки, который вернула программа.$?команда.

      $ busybox httpd -p 8080
$ busybox nc 127.0.0.1 8081
nc: can't connect to remote host (127.0.0.1): Connection refused
$ echo $?
1
$ busybox nc 127.0.0.1 8080
^C
$ echo $?
130

Здесь я запустил httpd на порту 8080. Затем выполнил nc, но он завершился с ошибкой с кодом ошибки 1. Снова запустил nc на порту 8080, и он прошел успешно и ничего не сказал. Но я прервал его, поэтому код выхода был 130:

Другие вопросы по тегам