Инструмент 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: