V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
nthin0
V2EX  ›  macOS

如何能在 iterm2 中实时看到当前的代理状态

  •  
  •   nthin0 · Mar 31, 2020 · 2765 views
    This topic created in 2219 days ago, the information mentioned may be changed or developed.

    背景: 目前通过 alias proxy 和 unproxy 设置终端是否走代理 proxy='export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7891' unproxy='unset all_proxy;unset https_proxy;unset http_proxy' 每次执行完后都是通过 curl cip.cc 查看 ip 地址确认代理状态

    需求: 能不能通过 iterm2 的标题栏或者 status bar 定时执行函数的方式看到当前的代理状态

    谢谢各位 v 站大佬了!

    Supplement 1  ·  Mar 31, 2020

    最后综合了 2# @q1angch0u 和16# kingddc314 的办法,单条命令用proxychains的zsh插件,全局命令用iTerm2 的 badge 功能:

    function iterm2_print_user_vars() {
        iterm2_set_user_var proxy $([ -z "$http_proxy" ] || echo "🧑<200d>💻")
    }
    

    达到了想要的效果,谢谢各位大佬了

    22 replies    2020-04-14 18:42:32 +08:00
    misaka19000
        1
    misaka19000  
       Mar 31, 2020
    同求大佬
    ryanbuu
        2
    ryanbuu  
       Mar 31, 2020
    推荐了解一下 proxychains
    sxiaojian
        3
    sxiaojian  
       Mar 31, 2020 via iPhone
    这么折腾感觉累,用软路由最爽,毕竟是专业的上网操作系统
    wuqingdzx
        4
    wuqingdzx  
       Mar 31, 2020   ❤️ 3
    nthin0
        5
    nthin0  
    OP
       Mar 31, 2020
    @q1angch0u 谢谢回答。
    但是 proxychains 似乎没办法处理 alias 过的命令?
    类似 proxychains4 -q bru ( bru 是 brew upgrade 的 alias )
    nthin0
        6
    nthin0  
    OP
       Mar 31, 2020
    @sxiaojian 条件不允许。。
    nthin0
        7
    nthin0  
    OP
       Mar 31, 2020
    @wuqingdzx 这个思路不错,曲线救国
    wuqingdzx
        8
    wuqingdzx  
       Mar 31, 2020
    @nthin0 跟着我这个结合一下.
    利用 p10k 自定义扩展也可以实现
    https://github.com/romkatv/powerlevel10k#extensible
    nthin0
        9
    nthin0  
    OP
       Mar 31, 2020
    @wuqingdzx 我是用的 spaceship 主题,没有用 powerlevel10k
    已经用上你刚刚发的函数判断方法了,感谢~
    sikong31
        10
    sikong31  
       Mar 31, 2020
    zsh powerlevel10k 主题 可以设置右边显示代理
    wuqingdzx
        11
    wuqingdzx  
       Mar 31, 2020
    jmc891205
        12
    jmc891205  
       Mar 31, 2020
    改一下你的 PS1 加到你的 shell prompt 里就可以了
    1002xin
        13
    1002xin  
       Mar 31, 2020
    Surge Enhanced Mode,没担心过终端代理不了的问题
    nthin0
        14
    nthin0  
    OP
       Mar 31, 2020
    @sikong31 看来要转用 powerlevel10k 了
    nthin0
        15
    nthin0  
    OP
       Mar 31, 2020
    @wuqingdzx 理想效果👍
    kingddc314
        16
    kingddc314  
       Mar 31, 2020   ❤️ 2
    可以用 iTerm2 的 badge 功能

    1. 先安装 Shell Integration
    https://www.iterm2.com/documentation-shell-integration.html

    2. ~/.zshrc 添加
    ```
    function iterm2_print_user_vars() {
    iterm2_set_user_var proxy $([ -z "$http_proxy" ] || echo "PROXY")
    }
    ```
    https://www.iterm2.com/documentation-scripting-fundamentals.html

    3. iTerm2 -> Preferences -> Profiles -> General -> Badge 设置为 \(user.proxy)
    https://www.iterm2.com/documentation-badges.html
    monson
        17
    monson  
       Mar 31, 2020
    用 powerlevel10k 的话,都不需要自己写扩展,直接把 .p10k.zsh 里 proxy 那一行的注释打开就可以了。
    nthin0
        18
    nthin0  
    OP
       Mar 31, 2020
    @kingddc314 相当简单粗暴直观的显示方式!给大佬赞一个👍
    jip
        19
    jip  
       Mar 31, 2020
    @1002xin Surge Enhanced Mode 可以支持终端么?
    1002xin
        20
    1002xin  
       Mar 31, 2020
    @jip 可以,除了终端,还有自带词典可以使用维基百科,自带 mail 邮件可以使用 Gmail
    lswang
        21
    lswang  
       Apr 3, 2020
    function proxy_off(){
    unset http_proxy
    unset https_proxy
    echo -e "已关闭代理"
    }

    function proxy_on() {
    export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
    export http_proxy="http://127.0.0.1:1087"
    export https_proxy=$http_proxy
    echo -e "已开启代理"
    }
    function proxy_status(){
    if [ $http_proxy ];then
    echo "代理已开启!"
    else
    echo "代理已关闭!"
    fi
    }


    拿走不谢
    kingddc314
        22
    kingddc314  
       Apr 14, 2020
    还有一种方式,利用 starship 的 custom 功能,直接在 Prompt 展示

    ```
    [custom.proxy]
    style = "bold blue"
    command = "echo $http_proxy"
    shell = "bash"
    when = """ test "$http_proxy" """
    prefix = "🚀 "
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1192 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 23:13 · PVG 07:13 · LAX 16:13 · JFK 19:13
    ♥ Do have faith in what you're doing.