在Windows里搭建简易的HTTP网页以下载文件

Win10下运行命令:python upload.py

如果之前没有安装过python,会自动弹出在线商店界面,手动安装即可。
Linux从网页拉取文件:wget http://192.168.2.105:8000/CA.cer -O /tmp/certs/CA.cer
其中的192.168.2.105是Win10的IP。

upload.py的内容如下:

复制代码
import http.server
import socketserver
import os
import sys
from datetime import datetime

# --- 配置区域 ---
PORT = 8000
# 设置要共享的目录,默认为脚本所在的目录,也可以指定为桌面等其他路径
# 例如: SHARED_DIR = os.path.join(os.path.expanduser("~"), "Desktop")
SHARED_DIR = os.getcwd() 
# ----------------

class RobustHandler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        # 指定共享目录
        super().__init__(*args, directory=SHARED_DIR, **kwargs)

    def log_message(self, format, *args):
        """
        重写日志方法,使其打印到 stdout 并带时间戳,
        这样你可以清楚地看到 vCenter 的请求是否到达。
        """
        sys.stdout.write("[%s] %s\n" % (
            datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
            format % args))
        sys.stdout.flush()

    def end_headers(self):
        """
        添加 CORS 头(可选),防止某些严格的客户端报错
        """
        self.send_header('Access-Control-Allow-Origin', '*')
        super().end_headers()

def run_server():
    # 检查目录是否存在
    if not os.path.exists(SHARED_DIR):
        print(f"❌ 错误:指定的共享目录不存在 -> {SHARED_DIR}")
        return

    # 使用 ThreadingTCPServer 以支持多个并发连接(虽然这里只需要一个,但更稳健)
    with socketserver.ThreadingTCPServer(("", PORT), RobustHandler) as httpd:
        print("**************************************************")
        print(f"🚀 增强版 HTTP 服务器已启动!")
        print(f"📂 共享目录: {SHARED_DIR}")
        print(f"🌐 访问地址: http://<你的Windows_IP>:{PORT}/")
        print(f"📄 请确保你的文件(如 vc.cer)在上述目录中")
        print("💡 按 Ctrl+C 停止服务")
        print("**************************************************")
        
        try:
            httpd.serve_forever()
        except KeyboardInterrupt:
            print("\n👋 服务器已手动停止。")

if __name__ == "__main__":
    run_server()
相关推荐
wxchyy1 天前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发
Databuff1 天前
使用Pinpoint作分布式链路跟踪系统
运维·分布式·运维开发·开源软件
阿朝笔记3 天前
PC / 外设资产 TCO 测算模型:租赁模式和直接采购怎么量化对比
运维开发·it资产管理·tco测算·硬件全生命周期·itam
Black_Rock_br3 天前
本地AI工具更新,#DSH Desktop桌面端# 正式发布迭代
人工智能·python·开源·运维开发·开源软件
小谈不敲代码3 天前
【10-kubernetes的控制器】
kubernetes·运维开发
云计算磊哥@4 天前
运维开发宝典061-CICD_版本控制器git
运维·git·运维开发
终末圆5 天前
GitHub Actions 实现 CI/CD
运维·ci/cd·github·运维开发·devops
goyeer7 天前
Liunx日志管理与journalctl
java·linux·运维·服务器·运维开发·信息化·信息化企业管理
星核0penstarry7 天前
Copilot 用 GLM:自备密钥和官方内置,到底差在哪?
copilot·运维开发·ai编程·api聚合平台
这个DBA有点耶15 天前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构