You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分Python脚本在PuTTY SSH与VNC终端的运行环境?

区分SSH与VNC终端运行场景并实现对应浏览器打开逻辑

嘿,这个需求可以通过检查终端会话的环境变量来区分两种场景,下面是具体的实现方案:

核心判断依据

两种运行场景的环境变量有明显差异:

  • SSH会话(PuTTY连接):系统会自动设置SSH_CONNECTION、SSH_CLIENT或SSH_TTY环境变量,这些变量可以直接用来识别SSH连接环境。
  • VNC终端会话:没有上述SSH相关变量,且虚拟机的终端会带有本地X显示的DISPLAY变量(通常是:0、:1这类格式,代表虚拟机的桌面显示会话)。

Python实现代码

下面的代码会先判断当前运行环境,再执行对应浏览器打开逻辑:

import os
import webbrowser

def open_browser_based_on_environment(url="https://example.com"):
    # 判断是否为SSH会话
    is_ssh = any(key in os.environ for key in ["SSH_CONNECTION", "SSH_CLIENT", "SSH_TTY"])
    
    if is_ssh:
        # SSH场景:在虚拟机中打开浏览器
        print("检测到SSH会话,将在虚拟机中打开浏览器")
        # Linux下优先用xdg-open调用系统默认浏览器,也可直接用webbrowser模块
        # 注意:若SSH未开启X11转发,需改用无头浏览器或确保X11转发已配置(PuTTY中需开启对应选项)
        os.system(f"xdg-open {url}")
        # 替代方案:webbrowser.open(url)
    else:
        # VNC场景:在VNC本地机器(你的物理电脑)打开浏览器
        print("检测到VNC终端会话,将在本地机器中打开浏览器")
        # 方案1:简单实现——把URL复制到VNC剪贴板,提示用户手动打开
        os.system(f"echo {url} | xclip -selection clipboard")
        print(f"URL已复制到剪贴板,请在本地浏览器打开:{url}")
        # 方案2:自动触发本地浏览器(需本地运行一个轻量监听服务)
        # import requests
        # requests.get(f"http://你的本地IP:5000/open?url={url}")

if __name__ == "__main__":
    open_browser_based_on_environment("https://your-target-url.com")

补充说明

  1. SSH场景的浏览器打开:如果虚拟机未开启X11转发,直接调用图形浏览器可能无法弹出窗口,这时候可以改用无头浏览器(比如Playwright、Selenium的无头模式),或者在PuTTY中开启X11转发选项。
  2. VNC本地浏览器自动触发:如果需要完全自动打开本地浏览器,最可靠的方式是在本地运行一个轻量的HTTP监听服务。比如用Flask写个简单服务:
    # 本地运行的Flask服务,用来接收虚拟机的请求并打开浏览器
    from flask import Flask, request
    import webbrowser
    
    app = Flask(__name__)
    
    @app.route('/open')
    def open_browser():
        url = request.args.get('url')
        if url:
            webbrowser.open(url)
            return f"已打开URL: {url}"
        return "缺少URL参数"
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=5000)
    
    之后虚拟机中的脚本调用requests.get("http://你的本地IP:5000/open?url=xxx"),就能自动触发本地浏览器打开目标URL。

内容的提问来源于stack exchange,提问作者npatel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:49:12