ubuntu shell(sh)脚本缺少某些行

ubuntu shell(sh)脚本缺少某些行

我为静态路由创建了一些脚本,称为“my.rc.route”,并将其放在 /etc/rc.local 上,因此每次服务器重新启动时,该脚本都会在所有启动过程之后运行。

我感到有点奇怪,发现我的脚本中的某些行被系统随机跳过。

有人遇到过这种情况吗?在哪里跟踪/记录读取?

我把我的“my.rc.route”粘贴到这里,Gnudiff 回答道。

#!/bin/bash
ip ro add table arieluna 10.254.254.248/29 dev lan  proto kernel  scope link  src 10.254.254.254
ip ro add table arieluna 10.222.23.0/24 dev vlan17  proto kernel  scope link  src 10.222.23.1
ip ro add table arieluna 10.222.22.0/24 dev vlan16  proto kernel  scope link  src 10.222.22.1
ip ro add table arieluna 10.222.21.0/24 dev vlan15  proto kernel  scope link  src 10.222.21.1
ip ro add table arieluna 10.222.20.0/24 dev vlan14  proto kernel  scope link  src 10.222.20.1
ip ro add table arieluna 10.222.19.0/24 dev vlan13  proto kernel  scope link  src 10.222.19.1
ip ro add table arieluna 10.222.18.0/24 dev vlan12  proto kernel  scope link  src 10.222.18.1
ip ro add table arieluna 10.222.17.0/24 dev vlan11  proto kernel  scope link  src 10.222.17.1
ip ro add table arieluna 10.222.16.0/24 dev vlan10  proto kernel  scope link  src 10.222.16.1
ip ro add table arieluna 10.222.24.0/24 dev vlan18  proto kernel  scope link  src 10.222.24.1

答案1

@Redmumba 在这方面走在正确的道路上。如果您尝试为尚未配置/启动的接口添加 iptables 规则,则 iptables 将抛出错误,并且不会添加规则。在我看来,这听起来像是您正在通过 NetworkManager 或类似的东西(取决于您的发行版)配置至少一个接口,并且该部分仅在用户通过 GUI 登录时发生(即rc.local 被执行)。

如果您希望它正常工作,您需要通过 /etc/network/interfaces 中的“up”命令(如果您使用的是基于 Debian 的发行版)或类似机制执行该脚本。

或者,您可以将接口配置为在启动时进行配置。在基于 Debian 的发行版中,这可以通过将接口节中的“allow-hotplug”关键字替换为“auto”来实现。其他发行版将使用其他机制,您必须阅读相关的手册页才能了解该怎么做。

相关内容