如何快速开启和关闭代理模式

这一步的前提是你已经完成了clash的部署内容上一篇文章
当完成了clash的部署后,自然是需要打开代理的
简单的方法就是

1
2
3
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

但是这只是临时使用。如果每次开关代理都这般麻烦,倒不如不用
也可以直接将这个部署到/etc/profile或者/root/.bashrc中。但他是永久性的改变。于是有些情况,他并不适用。国内的网站访问时,如果打开代理会使访问速度大大降低。得不偿失。

所以要设计一个便捷的开关方式,用来便捷的打开或者关闭代理。

  1. 第一种简洁方式(但是并不太符合所期望的简洁模式)
    设计两个sh脚本分别为open.shclose.sh
    先在目录下建一个目录switch
    1
    mkdir switch && cd switch
    然后编写两个文件,并把以下内容填入
    open.sh
    1
    2
    3
    4
    5
    #!/bin/bash
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
    export all_proxy=socket5://127.0.0.1:7891
    echo "已经打开代理"
    close.sh
    1
    2
    3
    4
    5
    #!/bin/bash
    unset http_proxy
    unset https_proxy
    unset all_proxy
    echo "已经关闭代理"
    他们的作用分别使打开代理和关闭代理。

普及一个知识点

source和bash

他们都可以执行shell脚本,但是bash命令会新建一个sh窗口,然后执行sh命令,而在新命令行中即便使用了export暴露了全局变量,也只是在新命令行以及新命令行建立的子命令行中有效。当他执行完毕后,他就会销毁构建的命令行,回到你的shell连接界面。此时你刚刚export暴露的全局变量都没了。
而如果使用source去执行sh命令。他不会构建一个新命令行,而是在当前的命令行下直接执行,所以你export的全局变量就算正确完成了。

Get

source命令等同于.命令
bash命令也可以简化为./命令

1
2
3
4
5
6
7
source open.sh
//等价于
. open.sh
////
./open.sh
//等价于
bash open.sh

然后可以将这两个命令软链接到/usr/bin来达到快捷启动的方法

/usr/bin下执行以下命令

1
2
ln -s /root/switch/open.sh openProxy
ln -s /root/switch/close.sh closeProxy

如上,便可以简单的执行启动和关闭代理的命令

1
2
3
4
root@VM-16-15-ubuntu:~/switch# . openProxy
已经打开代理
root@VM-16-15-ubuntu:~/switch# . closeProxy
已经关闭代理

以上就是第一种方法。
2. 可以在.bashrc中定义方法,在这其中的方法,也是可以直接访问的,而且他执行完后,他export的内容就会变成全局变量。
只需要在.bashrc中加入以下内容即可。
具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Open proxy
on() {
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
echo "代理已经打开"
}

# Close proxy
off() {
unset http_proxy
unset https_proxy
unset all_proxy
echo "代理已经关闭"
}

然后就可以通过

1
2
on
off

来启动和关闭代理了