根据当前子网在不同的 *.conf 之间进行选择

根据当前子网在不同的 *.conf 之间进行选择

我在一台笔记本电脑上运行着 gentoo,这台笔记本电脑在两个不同的网络上使用。当我在办公室时,我需要/想要在 make.conf 和 resolve.conf.head 中进行一些调整:我可以访问本地同步服务器和分布式编译,并且由于我们的 dhcp 设置方式,我需要在 resolve.conf.head 中添加一行以正确解析内部网名称。当我不在办公室网络上时,我需要禁用 make.conf 中的 resolve.conf.head 和分布式编译和本地同步服务器。有没有办法根据我当前的子网自动进行这些更改?也许通过将符号链接指向适当的 *.conf 文件?

任何建议都值得赞赏!

答案1

我建议将您想要为办公室添加的额外行放在单独的文件中,例如/etc/resolv.conf.office/etc/make.conf.office。然后在中/etc/make.conf,您可以写入以下内容:

on_office_network && source /etc/make.conf.office

某个命令只有on_office_network在您位于办公室网络上时才能成功运行。如果您可以根据 IP 地址判断,则该命令可能是

ifconfig eth0 | grep -q 'inet addr:192.168.1.1'

(其中192.168.1.1应该替换为您办公室网络上的 IP 地址)。

由于/etc/resolv.conf这不是 bash 脚本,因此您需要使用不同的技术。首先我想问的是,为什么您需要的额外行没有由 DHCP 自动插入,以及您是否可以通过某种方式进行修改/etc/conf.d/net以使其显示出来。如果没有,那么我猜创建/etc/resolv.conf.head一个符号链接并将其更改为/etc/resolv.conf.office在您连接到办公室网络时指向可能是一个不错的方法。不幸的是,我不知道如何在您连接到(或断开连接)网络时触发进程运行。

如果你在这里没有得到好的答案,你可能想在Gentoo 论坛

相关内容