小塌客

石头的博客

Category "system manage"

继续凸墙 for Mac OS

之前已经说过怎样用ssh tunnel来凸墙了, shitou一直用的Mac, 每次都需要使用时执行一次ssh的命令,然后就是进System Preferences中开启网络的sock代理,不用时还得kill掉ssh tunnel的进程,感觉还是麻烦的说,程序员不都是越来越懒惰的吗,所以就写了下面这个懒惰脚本,

用这个脚本的前提是:

1) 必须在Mac上
2) 必须以sudo的方式运行
3) 必须事先已经设置好socks代理的server ip和端口号,因为这个懒惰脚本不会帮你填代理的ip和端口号,你只需要设置一次就可以了,以后永远不用动了,设置socks代理的ip和端口的方法是System Preferences -> Network -> Advanced... -> Proxies -> SOCKS Proxy, 然后把ip和端口添进去就行了,下面脚本中会开启代理是127.0.0.1:8082, 我知道你也懒得改了,就按这个填吧...
4) 最后就是你最好设置好ssh使用无密码密钥登陆,不然每次都要敲ssh密码,要懒就懒极致...

好了,懒惰脚本在这里:
#!/bin/bash

#Parameters
USER=root
HOST=

#Configuration file
#Please check if the file exists
CONFIG_FILE=/Library/Preferences/SystemConfiguration/preferences.plist

SWITCH=0
case $1 in
  0|1)
    SWITCH=$1

    LINE=`grep -n 'SOCKSEnable' $CONFIG_FILE  | cut -d: -f1`
    sudo awk '{if(NR == "'$LINE'" + 1)print "'$SWITCH'";else print $0}' $CONFIG_FILE > $CONFIG_FILE.tmp
   sudo mv $CONFIG_FILE $CONFIG_FILE.bak
    sudo mv $CONFIG_FILE.tmp $CONFIG_FILE
    echo "Modify configuration file successfully!"

    if [[ $SWITCH == 1 ]]; then
      echo "*************"
      echo "Starting ssh tunnel.."
      ssh -Nf -D 0.0.0.0:8082  $USER@$HOST
      echo "Done!"
      echo "You are outsite the GFW now:-)"
    else
      echo "Stopping ssh tunnel.."
      kill `ps aux | grep "ssh -Nf" | grep -v grep | awk '{print $2}'` > /dev/null
      echo "You are insite the GFW now:-("
    fi
    ;;
  *)
    echo "need 0|1, exit"
    exit 1
esac

使用

首先你得保存下来,加入脚本名字是fuucck_gfw.sh, 然后填下USER和HOST两个变量,就是ssh登陆的用户名和主机,然后就完了.
sudo ./fuucck_gfw.sh 1
1是开启,0是关闭,执行完就OK了.

最后, 上面的脚本还不是最完善的, 原因在于, 每次修改完系统的Network配置后会重新载入当前的网络配置, 但是shitou怎么找都没找到在Mac中怎样用命令来reload网络配置的, 所以在你执行完上面的脚本后, 还需要在System Preferences中打开Proxies, 然后做一次SOCKS Proxy的配置改变, 就是点两下前面的单选框,然后点OK, Apply就行了, 有知道怎么在Mac中通过命令来reload网络配置的同学可以告诉我, 这样这个脚本就完善了, 真正的一键凸墙凹墙...