Simple HTTP Server
工作中,经常有需要开启某个端口进行业务模拟的需要,因此对一些直接开启端口的命令或者脚本做了个总结。
PYTHON2
基于python 2.7
IPv4
1 | python -m SimpleHTTPServer <port_number> // port_number默认为8000 |
此命令会在 0.0.0.0:
但是在本机有多个地址的情况下, SimpleHTTPServer 模块不支持设置监听某个地址,因此需要对 SimpleHTTPServer 做个改造
修改文件 /usr/lib64/python2.7BaseHTTPServer.py
中 test 函数,前几行修改为
1 | if sys.argv[1:]: |
或者,更简单一点
1 | python -c 'import BaseHTTPServer, SimpleHTTPServer; BaseHTTPServer.HTTPServer(("192.168.0.147", 8080), SimpleHTTPServer.SimpleHTTPRequestHandler).serve_forever()' |
IPv6
1 | import BaseHTTPServer |
或者直接一条命令
1 | echo -e 'import BaseHTTPServer\nimport SimpleHTTPServer\nimport socket\nclass HTTPServer6(BaseHTTPServer.HTTPServer):\n address_family = socket.AF_INET6\nif __name__ == "__main__":\n SimpleHTTPServer.test(ServerClass=HTTPServer6)' | python2 |
更简洁的方式
1 | python -c "import socket,SocketServer,CGIHTTPServer;SocketServer.TCPServer.address_family=socket.AF_INET6;CGIHTTPServer.test()" 8080 |
PYTHON3
基于 python 3.8
IPv4
1 | python3 -m http.server <port_number> |
针对多地址,可以再后面加 –bind 参数,例如
1 | python3 -m http.server <port_number> --bind 192.168.0.146 |
IPv6
1 | python -m http.server -b *your-ipv6-addr* *your-port* |
或者自编脚本实现
1 | from http.server import HTTPServer |