|
@@ -45,7 +45,7 @@ func disableEthBut2() error {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 启动"eth2"网口, 使其变可用
|
|
// 启动"eth2"网口, 使其变可用
|
|
|
-func EnableEth2() error {
|
|
|
|
|
|
|
+func enableEth2() error {
|
|
|
cmd := exec.Command("ip", "link", "set", "dev", "eth2", "up")
|
|
cmd := exec.Command("ip", "link", "set", "dev", "eth2", "up")
|
|
|
cmd.Stdout = baseapp.Logger.WriterLevel(logrus.DebugLevel)
|
|
cmd.Stdout = baseapp.Logger.WriterLevel(logrus.DebugLevel)
|
|
|
cmd.Stderr = baseapp.Logger.WriterLevel(logrus.ErrorLevel)
|
|
cmd.Stderr = baseapp.Logger.WriterLevel(logrus.ErrorLevel)
|
|
@@ -57,7 +57,7 @@ func EnableEth2() error {
|
|
|
|
|
|
|
|
// 启动DHCP客户端, 请求IP地址
|
|
// 启动DHCP客户端, 请求IP地址
|
|
|
func dialupEth2() error {
|
|
func dialupEth2() error {
|
|
|
- if err := EnableEth2(); err != nil {
|
|
|
|
|
|
|
+ if err := enableEth2(); err != nil {
|
|
|
return err
|
|
return err
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -226,8 +226,23 @@ func monitorEth2Udhcpc(exitCh <-chan struct{}) {
|
|
|
} // for end
|
|
} // for end
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func isInterfaceUp(name string) (bool, error) {
|
|
|
|
|
+ link, err := netlink.LinkByName(name)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return false, err
|
|
|
|
|
+ }
|
|
|
|
|
+ return link.Attrs().Flags&net.FlagUp != 0, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func IsEth2CableConnected() (bool, error) {
|
|
func IsEth2CableConnected() (bool, error) {
|
|
|
- if data, err := os.ReadFile("/sys/class/net/eth2/carrier"); err == nil {
|
|
|
|
|
|
|
+ if up, _ := isInterfaceUp("eth2"); !up { // 管理状态
|
|
|
|
|
+ err := enableEth2()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return false, err
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if data, err := os.ReadFile("/sys/class/net/eth2/carrier"); err == nil { // 物理状态
|
|
|
return strings.TrimSpace(string(data)) == "1", nil
|
|
return strings.TrimSpace(string(data)) == "1", nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -235,5 +250,5 @@ func IsEth2CableConnected() (bool, error) {
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return false, err
|
|
return false, err
|
|
|
}
|
|
}
|
|
|
- return link.Attrs().OperState == netlink.OperUp, nil
|
|
|
|
|
|
|
+ return link.Attrs().OperState == netlink.OperUp, nil // 操作状态
|
|
|
}
|
|
}
|