Ubuntu

ubuntu shell(sh)腳本缺少一些行

  • September 5, 2010

我為靜態路由創建了一些腳本,稱為“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

@Redmumba 在這裡是正確的。如果您嘗試為尚未配置/啟動的介面添加 iptables 規則,那麼 iptables 將引發錯誤並且不會添加規則。在我看來,這聽起來就像您正在通過 NetworkManager 或類似的東西(取決於您的發行版)配置至少一個介面,並且該部分僅在使用者通過 GUI 登錄時發生(即執行 rc.local 之後)。

如果你想讓它工作,你需要通過 /etc/network/interfaces 中的“up”命令(你在基於 Debian 的發行版上)或類似機制來執行腳本。

或者,您可以將介面配置為在引導時進行配置。在基於 Debian 的發行版中,這是通過將介面節中的“allow-hotplug”關鍵字替換為“auto”來完成的。其他發行版將為此使用其他機制,您必須閱讀相關的手冊頁以了解該怎麼做。

引用自:https://serverfault.com/questions/178099