У меня один http-сервер с открытым портом 8000, как у следующего:
orange@orange:~$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Как известно всем, есть несколько версий netcat, но по некоторым причинамЯ могу просто использовать следующие версии:
root@orange:~# busybox nc
BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.2) multi-call binary.
Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]
Open a pipe to IP:PORT or FILE
-l Listen mode, for inbound connects
(use -ll with -e for persistent server)
-p PORT Local port
-w SEC Connect timeout
-i SEC Delay interval for lines sent
-f FILE Use file (ala /dev/ttyS0) instead of network
-e PROG Run PROG after connect
Это означает, что должны использоваться только вышеприведенные параметры.
Я сделал следующее:
root@orange:~# rm -f /tmp/backpipe && mkfifo /tmp/backpipe && cat /tmp/backpipe | busybox nc 127.0.0.1 8000 | busybox nc -l -p 80 > /tmp/backpipe
Цель: когда пользователь посещает http://127.0.0.1:80
, он автоматически переходит к http://127.0.0.1:8000
, поэтому пользователю возвращается содержимое python simplehttpserver
.
Наконец, я запускаю тестclient:
orange@orange:~$ wget http://127.0.0.1
--2019-06-26 22:47:25-- http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1378 (1.3K) [text/html]
Saving to: ‘index.html’
index.html 100%
[==============================================>] 1.35K --.-KB/s in 0s
2019-06-26 22:47:25 (505 MB/s) - ‘index.html’ saved [1378/1378]
Прежде всего, все в порядке, но, вернувшись к команде переадресации порта, я обнаружил, что это был выход, поэтому он не получает второй раз при подключении.
Итак, мой вопрос, с вышеупомянутым busybox netcat, как я могу сделать так, чтобы команда перенаправления портов не выходила после первого соединения.
ПРИМЕЧАНИЕ: я не хочу, чтобы решение с for-loop
, я просто хочу найти способ сделать переадресацию порта с помощью вышеупомянутого netcat, тем временем он продолжит обслуживать после первого соединения.