我有一个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
的内容将返回给用户。
最后,我启动测试客户端:
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进行端口转发的方法,同时它将在首次连接后继续使用。