V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nthin0
V2EX  ›  macOS

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

  •  
  •   nthin0 · 2020-03-31 11:28:42 +08:00 · 1946 次点击
    这是一个创建于 1693 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景: 目前通过 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 站大佬了!

    第 1 条附言  ·  2020-03-31 17:46:33 +08:00

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

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

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

    22 条回复    2020-04-14 18:42:32 +08:00
    misaka19000
        1
    misaka19000  
       2020-03-31 11:37:01 +08:00
    同求大佬
    q1angch0u
        2
    q1angch0u  
       2020-03-31 12:55:08 +08:00
    推荐了解一下 proxychains
    sxiaojian
        3
    sxiaojian  
       2020-03-31 13:00:31 +08:00 via iPhone
    这么折腾感觉累,用软路由最爽,毕竟是专业的上网操作系统
    wuqingdzx
        4
    wuqingdzx  
       2020-03-31 13:30:08 +08:00   ❤️ 3
    nthin0
        5
    nthin0  
    OP
       2020-03-31 13:34:32 +08:00
    @q1angch0u 谢谢回答。
    但是 proxychains 似乎没办法处理 alias 过的命令?
    类似 proxychains4 -q bru ( bru 是 brew upgrade 的 alias )
    nthin0
        6
    nthin0  
    OP
       2020-03-31 13:34:57 +08:00
    @sxiaojian 条件不允许。。
    nthin0
        7
    nthin0  
    OP
       2020-03-31 13:35:19 +08:00
    @wuqingdzx 这个思路不错,曲线救国
    wuqingdzx
        8
    wuqingdzx  
       2020-03-31 13:45:47 +08:00
    @nthin0 跟着我这个结合一下.
    利用 p10k 自定义扩展也可以实现
    https://github.com/romkatv/powerlevel10k#extensible
    nthin0
        9
    nthin0  
    OP
       2020-03-31 13:49:02 +08:00
    @wuqingdzx 我是用的 spaceship 主题,没有用 powerlevel10k
    已经用上你刚刚发的函数判断方法了,感谢~
    sikong31
        10
    sikong31  
       2020-03-31 13:49:03 +08:00
    zsh powerlevel10k 主题 可以设置右边显示代理
    wuqingdzx
        11
    wuqingdzx  
       2020-03-31 14:12:09 +08:00
    jmc891205
        12
    jmc891205  
       2020-03-31 14:37:34 +08:00
    改一下你的 PS1 加到你的 shell prompt 里就可以了
    1002xin
        13
    1002xin  
       2020-03-31 15:11:47 +08:00
    Surge Enhanced Mode,没担心过终端代理不了的问题
    nthin0
        14
    nthin0  
    OP
       2020-03-31 15:40:24 +08:00
    @sikong31 看来要转用 powerlevel10k 了
    nthin0
        15
    nthin0  
    OP
       2020-03-31 15:40:49 +08:00
    @wuqingdzx 理想效果👍
    kingddc314
        16
    kingddc314  
       2020-03-31 15:56:26 +08:00   ❤️ 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  
       2020-03-31 15:57:17 +08:00
    用 powerlevel10k 的话,都不需要自己写扩展,直接把 .p10k.zsh 里 proxy 那一行的注释打开就可以了。
    nthin0
        18
    nthin0  
    OP
       2020-03-31 17:29:16 +08:00
    @kingddc314 相当简单粗暴直观的显示方式!给大佬赞一个👍
    jip
        19
    jip  
       2020-03-31 20:19:04 +08:00
    @1002xin Surge Enhanced Mode 可以支持终端么?
    1002xin
        20
    1002xin  
       2020-03-31 23:17:17 +08:00
    @jip 可以,除了终端,还有自带词典可以使用维基百科,自带 mail 邮件可以使用 Gmail
    lswang
        21
    lswang  
       2020-04-03 10:30:03 +08:00
    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  
       2020-04-14 18:42:32 +08:00
    还有一种方式,利用 starship 的 custom 功能,直接在 Prompt 展示

    ```
    [custom.proxy]
    style = "bold blue"
    command = "echo $http_proxy"
    shell = "bash"
    when = """ test "$http_proxy" """
    prefix = "🚀 "
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5717 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:31 · PVG 16:31 · LAX 00:31 · JFK 03:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.