看上去一段时间内没有人回复。 要再次发起对话,只需提出一个新问题即可。

问题:

问题: 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 "*****密码\n"

sudo route -nv add 172.16.11.0/24 172.16.10.82

expect "Password:"

send "*****密码\n"

}


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

发布日期 2017年3月25日 上午8:50

回复

2017年3月30日 下午11:08 回应 zhangdongbao 回应 zhangdongbao

已不建议使用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" "http://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年3月30日 下午11:08

回复 有用
以下用户的用户个人资料: zhangdongbao

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