This commit is contained in:
2023-08-18 11:53:44 +08:00
3 changed files with 36 additions and 6 deletions

View File

@@ -1,7 +1,6 @@
package monitor
import (
"fmt"
"net/http"
"sort"
"strings"
@@ -42,21 +41,21 @@ var (
// IPAddr IP地址
func IPAddr(w http.ResponseWriter, r *http.Request) {
ipAddrs := make(map[string]string)
ipAddrs := []map[string]string{}
interfaces, err := net.Interfaces()
if err == nil {
for _, iface := range interfaces {
var addrs []string
addrs := map[string]string{}
for _, v := range iface.Addrs {
prefix := strings.Split(v.Addr, "/")[0]
if strings.Contains(prefix, "::") {
addrs = append(addrs, fmt.Sprintf("IPv6 %s", prefix))
addrs["IPv6"] = prefix
}
if strings.Contains(prefix, ".") {
addrs = append(addrs, fmt.Sprintf("IPv4 %s", prefix))
addrs["IPv4"] = prefix
}
}
ipAddrs[iface.Name] = strings.Join(addrs, " / ")
ipAddrs = append(ipAddrs, addrs)
}
}
services.ResponseWithJson(w, 200, ipAddrs)

View File

@@ -1,7 +1,10 @@
package psnet
import (
"fmt"
"net"
"net/http"
"time"
"ems.agt/lib/log"
"ems.agt/lib/services"
@@ -16,6 +19,9 @@ var (
UriWs = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/ws"
// 停止进程
UriStop = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/stop"
// 检查ip端口请求
UriPing = config.DefaultUriPrefix + "/monitor/{apiVersion}/psnet/ping"
)
// 进程管理
@@ -60,3 +66,27 @@ func StopProcess(w http.ResponseWriter, r *http.Request) {
}
services.ResponseStatusOK200Null(w)
}
// 检查ip端口请求
func Ping(w http.ResponseWriter, r *http.Request) {
// json 請求參數獲取
var bodyArgs struct {
Host string `json:"host" validate:"required"`
Port string `json:"port" validate:"required"`
}
err := services.ShouldBindJSON(r, &bodyArgs)
if err != nil {
log.Error("io.ReadAll is failed:", err)
services.ResponseErrorWithJson(w, 400, err.Error())
return
}
conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%s", bodyArgs.Host, bodyArgs.Port), 3*time.Second)
if err != nil {
services.ResponseErrorWithJson(w, 400, err.Error())
return
}
defer conn.Close()
services.ResponseStatusOK200Null(w)
}

View File

@@ -223,6 +223,7 @@ func init() {
// 进程网络
Register("GET", psnet.UriWs, psnet.ProcessWs, nil)
Register("POST", psnet.UriStop, psnet.StopProcess, nil)
Register("POST", psnet.UriPing, psnet.Ping, nil)
// 主机CPU内存监控
Register("POST", monitor.UriLoad, monitor.LoadMonitor, nil)