niujiuru 1 месяц назад
Родитель
Сommit
765df66bd7
4 измененных файлов с 23 добавлено и 1 удалено
  1. 2 0
      go.mod
  2. 6 0
      go.sum
  3. 14 0
      netmgrd/eth0net.go
  4. 1 1
      netmgrd/netmgrd.go

+ 2 - 0
go.mod

@@ -7,6 +7,7 @@ require (
 	github.com/beevik/ntp v1.5.0
 	github.com/jlaffaye/ftp v0.2.0
 	github.com/sirupsen/logrus v1.9.3
+	github.com/vishvananda/netlink v1.3.1
 	gopkg.in/ini.v1 v1.67.0
 	gopkg.in/natefinch/lumberjack.v2 v2.2.1
 )
@@ -14,6 +15,7 @@ require (
 require (
 	github.com/hashicorp/errwrap v1.0.0 // indirect
 	github.com/hashicorp/go-multierror v1.1.1 // indirect
+	github.com/vishvananda/netns v0.0.5 // indirect
 	golang.org/x/net v0.44.0 // indirect
 	golang.org/x/sys v0.36.0 // indirect
 )

+ 6 - 0
go.sum

@@ -20,9 +20,15 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
 github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
+github.com/vishvananda/netlink v1.3.1 h1:3AEMt62VKqz90r0tmNhog0r/PpWKmrEShJU0wJW6bV0=
+github.com/vishvananda/netlink v1.3.1/go.mod h1:ARtKouGSTGchR8aMwmkzC0qiNPrrWO5JS/XMVl45+b4=
+github.com/vishvananda/netns v0.0.5 h1:DfiHV+j8bA32MFM7bfEunvT8IAqQ/NzSJHtcmW5zdEY=
+github.com/vishvananda/netns v0.0.5/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM=
 golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
 golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
 golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=

+ 14 - 0
netmgrd/eth0net.go

@@ -11,6 +11,8 @@ import (
 	"time"
 
 	"github.com/sirupsen/logrus"
+	"github.com/vishvananda/netlink"
+
 	"hnyfkj.com.cn/rtu/linux/baseapp"
 )
 
@@ -170,3 +172,15 @@ func MonitorEth0Udhcpc(exitCh <-chan struct{}) {
 		} // select end
 	} // for end
 }
+
+func IsEth0CableConnected() (bool, error) {
+	if data, err := os.ReadFile("/sys/class/net/eth0/carrier"); err == nil {
+		return strings.TrimSpace(string(data)) == "1", nil
+	}
+
+	link, err := netlink.LinkByName("eth0")
+	if err != nil {
+		return false, err
+	}
+	return link.Attrs().OperState == netlink.OperUp, nil
+}

+ 1 - 1
netmgrd/netmgrd.go

@@ -37,7 +37,7 @@ func serviceRun() {
 		case <-t.C:
 			// 1, 联网检测-看结果
 			dnsOK, pingOK, tcpOK, httpOK := CheckNetwork()
-			baseapp.Logger.Infof("[%s] 联网检测: DNS OK=%v, PING OK=%v, TCP OK=%v, HTTP OK=%v, MQTT OK=%v", MODULE_NAME, dnsOK, pingOK, tcpOK, httpOK)
+			baseapp.Logger.Infof("[%s] 联网检测: DNS OK=%v, PING OK=%v, TCP OK=%v, HTTP OK=%v", MODULE_NAME, dnsOK, pingOK, tcpOK, httpOK)
 
 			// 2, 检测成功-在线时
 			if dnsOK && pingOK && tcpOK {