阅读562 返回首页    go iPhone_iPad_Mac_手机_平板_苹果apple


Mac OS 10.12.3如何添加永久静态路由

我电脑是2016年底最新的MAC BOOK PRO,现在系统版本是10.12.3

因为工作原因需要在设置电脑IP为172.16.10.27,通过这个IP连接到其他网段。需要在MAC OS上设置两条静态路由。

sudo route add 172.16.0.0/16 172.16.10.89

sudo route add 172.16.11.0/24 172.16.10.82

在终端添加这两条路由没问题。但是每次重启系统都要重新添加。在网上查询了,那些在/system/Library/StartupItems/AddRoutes/下添 加AdaRoutes和StartupParameters.plist两个文件实现开机启动自动添加路由的方法根本不适用此版本的Mac OS。

以下是两个文件的内容:

BaoYe:AddRoutes root# ls -l

total 16

-rwxrwxrwx  1 root  wheel  334 Mar 24 13:25 AddRoutes

-rwxrwxrwx  1 root  wheel  173 Mar 24 11:13 StartupParameters.plist

BaoYe:AddRoutes root# more AddRoutes

#!/bin/sh

# Set up static routing tables

. /etc/rc.common

StartService ()

{

sudo route -nv add 172.16.0.0/16 172.16.10.89

sudo route -nv add 172.16.11.0/24 172.16.10.82

}

StopService ()

{

        return 0

}

RestartService ()

{

        return 0

}

RunService "$1"

 

BaoYe:AddRoutes root#  more StartupParameters.plist

{

        Description     = "Add static routing tables";

        Provides        = ("AddRoutes");

        Requires        = ("Network");

        OrderPreference = "None";

}

 

网上介绍的方法都是类似的这些,我的电脑启动的时候不是以root用户启动,而是以我自己的用户启动,这开机自动添加默认路由的方法根本不生效。

一开始怀疑是sudo route -nv add 172.16.0.0/16 172.16.10.89需要输入密码的原因,用了expect更改脚本中这两条语句为以下内容还是不能生效。

{

sudo route -nv add 172.16.0.0/16 172.16.10.89

expect "Password:"

send "*****密码 "

sudo route -nv add 172.16.11.0/24 172.16.10.82

expect "Password:"

send "*****密码 "

}

 

哪位好心的大神帮帮我呀?



已不建议使用StartupItems。就你目前的叙述来说,可以用下面的方法:

 

1. 创建目录

mkdir -p /usr/local/bin

 

2. 创建第一个文件,添加路由的脚本, 把它保存到/usr/local/bin/addroute.sh。其中添加了一个日志语句(logger),如不需要可以删除.

#!/bin/bash

route add 172.16.0.0/16 172.16.10.89

route add 172.16.11.0/24 172.16.10.82

logger -i "addRoute: Done with error code: $?"

 

3. 创建第二个文件,纯文本文件,把它保存为:/Library/LaunchDaemons/org.mylocalmachine.addroute.plist

这一步需要管理员权限才能保存。使用你编辑脚本的编辑器,直接把下边内容复制到你的编辑器里保存即可。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

  <key>Disabled</key>

  <false/>

  <key>KeepAlive</key>

  <false/>

  <key>Label</key>

  <string>org.mylocalmachine.addroute</string>

  <key>Program</key>

  <string>/usr/local/bin/addroute.sh</string>

  <key>RunAtLoad</key>

  <true/>

</dict>

</plist>

 

3. 运行下面命令以修正权限:

sudo chmod 755 /usr/local/bin/addroute.sh

sudo chmod 644 /Library/LaunchDaemons/org.mylocalmachine.addroute.plist

sudo chown root:wheel /usr/local/bin/addroute.sh/Library/LaunchDaemons/org.mylocalmachine.addroute.plist

 

4. 如需要全部卸载/删除,就是把上面前两步的文件都删除就可以了。

 

每次重新启动都会自动添加路由了。

 

如果有问题,确认每个文件的文件名路径和权限都正确.



最后更新:2017-05-11 01:20:38

  上一篇:go mac连接电源自动开机 冲不进去电
  下一篇:go Macbook pro不充电开不了机