Mac 全局翻墙配置,APP、浏览器、终端(二)

Proximac自定义 扩展

  1. 增加 proxy shell函数用来打开 proximac
  2. 增加 noproxy shell函数用来关闭 proximac
  3. 增加 proxyapp shell函数用来列出 proximac 中代理的所有 app
  4. 增加 proxyadd shell函数用来添加需要被 proximac 代理的 app
  5. 终端 配置 proxichain

运行 Proximac

需求:

  1. 一个命令运行 Proximac
  2. Proximac 已经开启的话就不再重复运行
  3. 若未开启的话则自动运行

我使用的是 iTerm2 + oh-my-zsh,在 zsh 的配置文件中有一句source $ZSH/oh-my-zsh.sh,所以我便在 oh-my-zsh.sh中增加了一个函数来判断proximac-cli这个进程是否存在,存在的话就输出一句话Proximac already running!,不存在的话就执行proximac start -d -c ~/proximac.conf

函数:

1
2
3
4
5
6
7
8
9
10
proxy() {
count=`ps axu|grep "proximac-cli"|grep -v "grep"|wc -l`
if [ $count -eq 0 ]
then
proximac start -d -c ~/proximac.conf
echo "Proximac started successful!"
else
echo "Proximac already running!"
fi
}

增加了这个函数以后便在 iTerm2 运行时自动定义好了,在命令行里面直接运行proxy后便可以运行 Proximac 了

停止运行 Proximac

停止运行 Procxiamc 的命令是proximac stop

这个很简单,可以直接在 zshrc 配置文件中创建一个 alias

1
alias noproxy="proximac stop"

列出当前配置中代理的所有 APP(其实并没有太大卵用)

也是在 zshrc 中增加一句 alias

1
alias proxyapp="cat ~/proximac.conf | grep "process_name" | cut -d ":" -f 2"

在配置文件中增加一个需要代理的 APP 进程(还没有比较简单的解决方案)

原想使用sed命令

1
sed -i -e 's/]/, "process_name"]/g' ~/proximac.conf

这样就在那个 list 中增加了一个进程名,可是命令太长了,一点也不人性化,一行命令也犯不上搞个 python 脚本之类的,但是shell 渣渣还没解决怎么在shell 函数中传进去一个字符串,放到sed命令中使用。

1
2
3
4
5
# 类似下面这样
proxyadd() {
sed -i -e 's/]/, "$1"]/g' ~/proximac.conf
}
# 怎么在 sed 命令中引用 $1 参数?