美文网首页
XX-Net IPV6 及 开机自动运行脚本

XX-Net IPV6 及 开机自动运行脚本

作者: Saylor_Lone | 来源:发表于2018-03-02 11:32 被阅读2204次

    一直使用XX-Net 去域外网站查询资料,不过有一段时间很不友好。折腾了半天,Mac 上开启了IPv6,并实现了开机自动运行脚本。

    github上两个有用的issues:
    手动安装Miredo、tuntaposx

    //这个方案需要关闭Mac的SIP,具体命令:
    1.开机时,按住 command+R 进入到恢复模式
    2. 恢复模式下,终端输入 csrutil disable
    3. 重启,终端输入  reboot
    4.开机后安装 miredo、tuntaposx
    
    但是我这里做了一遍之后,发现miredo一直是黄灯。无法正常工作~~~
    

    命令行版本

    //这个方案不需要关闭Mac 的SIP
    //具体命令issue里说的很完整,这里看下下面这个脚本。
    #!/bin/bash
    SIGNED_TUN_PATH=/Applications/Tunnelblick.app/Contents/Resources/
    cd $SIGNED_TUN_PATH
    sudo kextload tun-signed.kext
    sudo miredo
    

    这个方案解决了问题,但是我更想做到开机自启动。
    搜罗了一圈,发现大概有两个方案。
    1.系统提供的 root运行方案

    sudo defaults write com.apple.loginwindow LoginHook /path/to/script 
    //path/to/script 就是你的脚本路径
    

    2.手动配置登录项
    a.设置脚本默认打开方式为终端,记得要更改权限777,先不要勾选隐藏。


    脚本设置

    b.系统偏好设置-用户群组-当前登录用户-登录项点+号按钮,这里记得添加的是sh脚本文件。


    登录项设置

    上面的步骤做完以后,开机运行一下会发现脚本是执行了,可是需要root密码。这个问题的解决,可以使用expect。方法如下:

    安装expect

    //终端输入
    brew install expect
    ...
    ...
    
    //成功安装后,创建一个脚本文件(注意这是第二个脚本了),并且要和之前的那个脚本放在同一个目录下。
    touch autoStart.sh 
    //更改权限
    sudo chmod 777 autoStart.sh
    ...
    //脚本内容如下
    #!/usr/bin/expect
    #设置密码的值
    set password "你的root密码" 
    #expect方式: 进入脚本所在的路径
    cd [file dirname $argv0]
    #shell方式: 进入脚本所在的路径
    #$currentpath=$(cd "$(dirname "$0")";pwd)
    #cd $currentpath
    #执行脚本 如果没有上一步,这里脚本需要加绝对路径才能正常执行
    spawn sudo ./之前配置的脚本文件名,如(config.sh)
    #expect对通过spawn执行的shell脚本的返回进行判断,是否包含Password字符串
    expect "Password"
    #如果expect监测到了包含的字符串,将输入send中的内容,\n相当于回车
    send "$password\n"
    #退出expect返回终端,可以继续输入,否则将一直在expect不能退出到终端
    interact
    

    重要的一点,重要的一点,重要的一点!!!将之前在登录项里配置的脚本文件替换成,autoStart.sh文件。
    Done...

    相关文章

      网友评论

          本文标题:XX-Net IPV6 及 开机自动运行脚本

          本文链接:https://www.haomeiwen.com/subject/bvaoxftx.html