Merge branch 'main-v2' into lite

This commit is contained in:
TsMask
2025-07-01 10:29:04 +08:00
39 changed files with 1536 additions and 1435 deletions

View File

@@ -3,6 +3,7 @@ package ne_alarm_state_check_license
import (
"encoding/json"
"fmt"
"math"
"time"
"be.ems/src/framework/constants"
@@ -157,9 +158,13 @@ func (s NeAlarmStateCheckLicenseProcessor) serverState(state map[string]any, day
}
// 计算距离天数
daysLeft := int64(time.Until(expireTime).Hours() / 24)
if daysLeft < dayLt {
return fmt.Errorf("license will expire in %d days", daysLeft)
daysLeft := time.Until(expireTime).Hours() / 24
expireDay := int64(math.Ceil(daysLeft))
if expireDay <= dayLt {
if expireDay <= 0 {
return fmt.Errorf("license will expire after today")
}
return fmt.Errorf("license will expire in %d days", expireDay)
}
return nil
}

View File

@@ -62,7 +62,7 @@ func (s *NeConfigBackupProcessor) Execute(data any) (any, error) {
msg := "ok"
// 上传到FTP服务器
if err := s.backupService.FTPPushFile(zipFilePath, "ne_config"); err != nil {
if err := s.backupService.FTPPushFile(zipFilePath, ""); err != nil {
result[neTypeAndId] = msg + ", ftp err:" + err.Error()
}
result[neTypeAndId] = msg

View File

@@ -100,6 +100,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
neId := c.Param("neId")
imsi := c.Param("imsi")
msisdn := c.Query("msisdn")
volte := c.Query("volte")
if neId == "" || imsi == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId or imsi is empty"))
return
@@ -108,6 +109,10 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: msisdn is required"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
@@ -124,7 +129,7 @@ func (s *UDMVolteIMSController) Info(c *gin.Context) {
defer telnetClient.Close()
// 发送MML
cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s", imsi, msisdn)
cmd := fmt.Sprintf("dsp imsuser:imsi=%s,msisdn=%s,volte=%s", imsi, msisdn, volte)
data, err := telnet.ConvertToMap(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
@@ -297,13 +302,16 @@ func (s *UDMVolteIMSController) Adds(c *gin.Context) {
func (s *UDMVolteIMSController) Remove(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
msisdn := c.Query("msisdn")
if neId == "" || imsi == "" {
imsi_msisdn := c.Param("imsi")
volte := c.Query("volte")
if neId == "" || imsi_msisdn == "" {
c.JSON(400, resp.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
imsiArr := strings.Split(imsi, ",")
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
@@ -319,46 +327,34 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
}
defer telnetClient.Close()
// 精确msisdn删除
if msisdn != "" {
imsiArr := strings.Split(imsi_msisdn, ",")
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{}
for _, im := range uniqueIDs {
imArr := strings.SplitN(im, "_", 2)
if len(imArr) != 2 {
resultData[im] = "format should be imsi_msisdn"
continue
}
// 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s", imsiArr[0], msisdn)
cmd := fmt.Sprintf("del imsuser:imsi=%s,msisdn=%s,volte=%s", imArr[0], imArr[1], volte)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
resultData[im] = err.Error()
continue
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId)
s.udmVolteIMSService.Delete(imArr[0], neId)
}
c.JSON(200, resp.OkData(data))
return
} else {
// 处理字符转id数组后去重
uniqueIDs := parse.RemoveDuplicates(imsiArr)
if len(uniqueIDs) <= 0 {
c.JSON(200, resp.Err(nil))
return
}
resultData := map[string]string{}
for _, imsi := range uniqueIDs {
// 发送MML
cmd := fmt.Sprintf("del imsuser:imsi=%s", imsi)
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
resultData[imsi] = err.Error()
continue
}
// 命令ok时
if strings.Contains(data, "ok") {
s.udmVolteIMSService.Delete(imsi, neId)
}
resultData[imsi] = data
}
c.JSON(200, resp.OkData(resultData))
return
resultData[im] = data
}
c.JSON(200, resp.OkData(resultData))
}
// UDMVolteIMS用户批量删除
@@ -379,12 +375,17 @@ func (s *UDMVolteIMSController) Remove(c *gin.Context) {
func (s *UDMVolteIMSController) Removes(c *gin.Context) {
language := reqctx.AcceptLanguage(c)
neId := c.Param("neId")
imsi := c.Param("imsi")
imsi_msisdn := c.Param("imsi")
num := c.Param("num")
if neId == "" || imsi == "" || num == "" {
volte := c.Query("volte")
if neId == "" || imsi_msisdn == "" || num == "" {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: neId/imsi/num is empty"))
return
}
if volte == "" || !(volte == "0" || volte == "1") {
c.JSON(422, resp.CodeMsg(resp.CODE_PARAM_CHEACK, "bind err: volte is required"))
return
}
// 查询网元获取IP
neInfo := s.neInfoService.FindByNeTypeAndNeID("UDM", neId)
@@ -400,8 +401,22 @@ func (s *UDMVolteIMSController) Removes(c *gin.Context) {
}
defer telnetClient.Close()
imArr := strings.SplitN(imsi_msisdn, "_", 2)
if len(imArr) != 2 {
c.JSON(200, resp.ErrMsg("format should be imsi_msisdn"))
return
}
imsi := imArr[0]
msisdn := imArr[1]
// 发送MML
cmd := fmt.Sprintf("bde imsuser:start_imsi=%s,sub_num=%s", imsi, num)
cmd := ""
if volte == "0" {
cmd = fmt.Sprintf("bde imsuser:start_msisdn=%s,sub_num=%s,volte=0", msisdn, num)
}
if volte == "1" {
cmd = fmt.Sprintf("bde imsuser:start_imsi=%s,start_msisdn=%s,sub_num=%s,volte=1", imsi, msisdn, num)
}
data, err := telnet.ConvertToStr(telnetClient, cmd)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))

View File

@@ -181,7 +181,10 @@ func (r UDMVolteIMSUser) LoadData(neId, imsiOrMsisdn, num string) {
subNum, _ := strconv.ParseInt(num, 10, 64)
var i int64
for i = 0; i < subNum; i++ {
keyIMSI := fmt.Sprintf("%d", startIMSIOrMsisdn+i)
keyIMSI := fmt.Sprintf("%015d", startIMSIOrMsisdn+i)
if !strings.HasPrefix(imsiOrMsisdn, "0") {
keyIMSI = fmt.Sprintf("%d", startIMSIOrMsisdn+i)
}
// 删除原数据
r.udmVolteIMSRepository.Delete(keyIMSI, neId)
// 加载数据

View File

@@ -84,7 +84,7 @@ func (s *NeActionController) PushFile(c *gin.Context) {
localFilePath := file.ParseUploadFileAbsPath(body.UploadPath)
// 网元端临时目录
// sshClient.RunCMD("mkdir -p /tmp/omc/push && sudo chmod 777 -R /tmp/omc")
cmd.Exec("sudo mkdir -p /tmp/omc/push && sudo chmod 755 -R /tmp/omc")
cmd.Exec("sudo mkdir -p /tmp/omc/push && sudo chmod 777 -R /tmp/omc")
neFilePath := filepath.ToSlash(filepath.Join("/tmp/omc/push", filepath.Base(localFilePath)))
// 复制到远程
// if err = sftpClient.CopyFileLocalToRemote(localFilePath, neFilePath); err != nil {

View File

@@ -25,7 +25,7 @@ const (
DbPort = 13306
DbUser = "root"
DbPassswd = "1000omc@kp!"
DbName = "omc_db_lichang"
DbName = "omc_db_mainv2"
// 配置文件路径
configParamDir = "../../../local/param"
// configParamFile = "*" // 目录下全部更新

View File

@@ -23,7 +23,7 @@ func (r NeConfigBackup) SelectByPage(query map[string]string) ([]model.NeConfigB
tx = tx.Where("ne_type = ?", v)
}
if v, ok := query["neId"]; ok && v != "" {
tx = tx.Where("neId = ?", v)
tx = tx.Where("ne_id = ?", v)
}
if v, ok := query["name"]; ok && v != "" {
tx = tx.Where("name like ?", fmt.Sprintf("%%%s%%", v))

View File

@@ -95,8 +95,8 @@ func (s NeConfigBackup) FileLocalToNe(neInfo model.NeInfo, localFile string) err
// 网元配置端上的临时目录
neDirTemp := fmt.Sprintf("/tmp/omc/ne_config/%s/%s", neTypeLower, neInfo.NeId)
// sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc && sudo rm -rf %s", neDirTemp))
cmd.Execf("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc && sudo rm -rf %s", neDirTemp)
// sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 777 -R /tmp/omc && sudo rm -rf %s", neDirTemp))
cmd.Execf("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 777 -R /tmp/omc && sudo rm -rf %s", neDirTemp)
// 复制到网元端
// if err = sftpClient.CopyDirLocalToRemote(localDirPath, neDirTemp); err != nil {
// return fmt.Errorf("copy config to ne err")
@@ -106,26 +106,27 @@ func (s NeConfigBackup) FileLocalToNe(neInfo model.NeInfo, localFile string) err
}
// 配置复制到网元内
if neTypeLower == "ims" {
switch neTypeLower {
case "ims":
// ims目录
imsDirArr := [...]string{"bgcf", "icscf", "ismc", "mmtel", "mrf", "oam_manages.yaml", "pcscf", "scscf", "vars.cfg", "zlog"}
imsDirArr := [...]string{"bgcf", "icscf", "ismc", "mmtel", "mrf", "oam_manager.yaml", "pcscf", "scscf", "vars.cfg", "zlog"}
for _, v := range imsDirArr {
cmd.Execf("sudo mkdir -p /usr/local/etc/ims && sudo cp -rf %s/ims/%s /usr/local/etc/ims/%v && sudo chmod 755 -R /usr/local/etc/ims/%s", neDirTemp, v, v, v)
cmd.Exec(fmt.Sprintf("sudo mkdir -p /usr/local/etc/ims && sudo cp -rf %s/ims/%s /usr/local/etc/ims/%v && sudo chmod 777 -R /usr/local/etc/ims/%s", neDirTemp, v, v, v))
}
// mf目录
cmd.Execf("sudo mkdir -p /usr/local/etc/mf && sudo cp -rf %s/mf/* /usr/local/etc/mf && sudo chmod 755 -R /usr/local/etc/mf", neDirTemp)
cmd.Exec(fmt.Sprintf("sudo mkdir -p /usr/local/etc/mf && sudo cp -rf %s/mf/* /usr/local/etc/mf && sudo chmod 777 -R /usr/local/etc/mf", neDirTemp))
// rtproxy目录
cmd.Execf("sudo mkdir -p /usr/local/etc/rtproxy && sudo cp -rf %s/rtproxy/* /usr/local/etc/rtproxy && sudo chmod 755 /usr/local/etc/rtproxy/rtproxy.conf", neDirTemp)
cmd.Exec(fmt.Sprintf("sudo mkdir -p /usr/local/etc/rtproxy && sudo cp -rf %s/rtproxy/* /usr/local/etc/rtproxy && sudo chmod 777 /usr/local/etc/rtproxy/rtproxy.conf", neDirTemp))
// iwf目录
cmd.Execf("sudo mkdir -p /usr/local/etc/iwf && sudo cp -rf %s/iwf/* /usr/local/etc/iwf && sudo chmod 755 /usr/local/etc/iwf/*.yaml", neDirTemp)
} else if neTypeLower == "smsc" {
chmodFile := "sudo chmod 755 /usr/local/etc/smsc/{*sys.conf,*conf.txt,conf/is41_operation.conf}"
cmd.Execf("sudo mkdir -p /usr/local/etc/smsc/conf && sudo cp -rf %s/* /usr/local/etc/smsc && %s", neDirTemp, chmodFile)
} else {
cmd.Exec(fmt.Sprintf("sudo mkdir -p /usr/local/etc/iwf && sudo cp -rf %s/iwf/* /usr/local/etc/iwf && sudo chmod 777 /usr/local/etc/iwf/*.yaml", neDirTemp))
case "smsc":
chmodFile := "sudo chmod 777 /usr/local/etc/smsc/{*sys.conf,*conf.txt,conf/is41_operation.conf}"
cmd.Exec(fmt.Sprintf("sudo mkdir -p /usr/local/etc/smsc/conf && sudo cp -rf %s/* /usr/local/etc/smsc && %s", neDirTemp, chmodFile))
default:
neEtcPath := fmt.Sprintf("/usr/local/etc/%s", neTypeLower)
chmodFile := fmt.Sprintf("sudo chmod 755 %s/*.yaml", neEtcPath)
chmodFile := fmt.Sprintf("sudo chmod 777 %s/*.yaml", neEtcPath)
if neTypeLower == "mme" {
chmodFile = fmt.Sprintf("sudo chmod 755 %s/*.{yaml,conf}", neEtcPath)
chmodFile = fmt.Sprintf("sudo chmod 777 %s/*.{yaml,conf}", neEtcPath)
}
cmd.Execf("sudo cp -rf %s/* %s && %s", neDirTemp, neEtcPath, chmodFile)
}
@@ -159,10 +160,11 @@ func (s NeConfigBackup) FileNeToLocal(neInfo model.NeInfo) (string, error) {
localDirPath := fmt.Sprintf("%s/%s/%s/from_ne_tmp", omcPath, neTypeLower, neInfo.NeId)
// 网元配置文件先复制到临时目录
// sshClient.RunCMD("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc")
cmd.Exec("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc")
// sshClient.RunCMD("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 777 -R /tmp/omc")
cmd.Exec("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 777 -R /tmp/omc")
neDirTemp := fmt.Sprintf("/tmp/omc/ne_config/%s/%s", neTypeLower, neInfo.NeId)
if neTypeLower == "ims" {
switch neTypeLower {
case "ims":
// ims目录
cmd.Execf("mkdir -p %s/ims", neDirTemp)
imsDirArr := [...]string{"bgcf", "icscf", "ismc", "mmtel", "mrf", "oam_manages.yaml", "pcscf", "scscf", "vars.cfg", "zlog"}
@@ -174,11 +176,11 @@ func (s NeConfigBackup) FileNeToLocal(neInfo model.NeInfo) (string, error) {
// rtproxy目录
cmd.Execf("mkdir -p %s/rtproxy && sudo cp -rf /usr/local/etc/rtproxy/rtproxy.conf %s/rtproxy", neDirTemp, neDirTemp)
// iwf目录
cmd.Execf("mkdir -p %s/iwf && sudo cp -rf /usr/local/etc/iwf/*.yaml %s/iwf", neDirTemp, neDirTemp)
} else if neTypeLower == "smsc" {
cmd.Execf("mkdir -p %s && sudo cp -rf /usr/local/etc/smsc/{*.yaml,*.conf,*conf.txt} %s", neDirTemp, neDirTemp)
cmd.Execf("sudo cp -rf /usr/local/etc/smsc/conf %s/conf", neDirTemp)
} else {
cmd.Exec(fmt.Sprintf("mkdir -p %s/iwf && sudo cp -rf /usr/local/etc/iwf/*.yaml %s/iwf", neDirTemp, neDirTemp))
case "smsc":
cmd.Exec(fmt.Sprintf("mkdir -p %s && sudo cp -rf /usr/local/etc/smsc/{*.yaml,*.conf,*conf.txt} %s", neDirTemp, neDirTemp))
cmd.Exec(fmt.Sprintf("sudo cp -rf /usr/local/etc/smsc/conf %s/conf", neDirTemp))
default:
nePath := fmt.Sprintf("/usr/local/etc/%s/*.yaml", neTypeLower)
if neTypeLower == "mme" {
nePath = fmt.Sprintf("/usr/local/etc/%s/*.{yaml,conf}", neTypeLower)

View File

@@ -243,7 +243,7 @@ func (r NeVersion) operateCommand(action, neType string, neFilePaths []string) (
pkgCmdStr := fmt.Sprintf("sudo dpkg -i %s", strings.Join(neFilePaths, " "))
fileExt := filepath.Ext(strings.ToLower(neFilePaths[0]))
if strings.HasSuffix(fileExt, "rpm") {
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh --reinstall %s", strings.Join(neFilePaths, " "))
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh --nosignature --nodeps --replacepkgs %s", strings.Join(neFilePaths, " "))
}
// 组合命令输入
@@ -261,7 +261,7 @@ func (r NeVersion) operateCommand(action, neType string, neFilePaths []string) (
// 升级软件包
pkgCmdStr = fmt.Sprintf("sudo dpkg -i %s", strings.Join(neFilePaths, " "))
if strings.HasSuffix(fileExt, "rpm") {
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh --reinstall %s", strings.Join(neFilePaths, " "))
pkgCmdStr = fmt.Sprintf("sudo rpm -Uvh --nosignature --nodeps --replacepkgs %s", strings.Join(neFilePaths, " "))
}
omcStrArr = append(omcStrArr, pkgCmdStr)
}
@@ -331,6 +331,10 @@ func (r NeVersion) operateCommand(action, neType string, neFilePaths []string) (
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sst: 1/sst: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SST"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/sd: 000001/sd: %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SD"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/- 4388/- %s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["TAC"]))
// 使用UDM融合AUSF时
if para5GData["AUSF_IP"] == "172.16.5.130" {
para5GData["AUSF_IP"] = para5GData["UDM_IP"]
}
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.130/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["AUSF_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.140/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["UDM_IP"]))
cmdStrArr = append(cmdStrArr, fmt.Sprintf("sudo sed -i \"s/172.16.5.150/%s/g\" /usr/local/etc/amf/amfcfg.yaml \n", para5GData["SMF_IP"]))

View File

@@ -56,7 +56,7 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) {
taskCode := time.Now().Format("20060102150405")
// 存放文件目录 /usr/local/omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt.Sprintf("/usr/local/omc/tcpdump/%s/%s/%s", strings.ToLower(neType), neId, taskCode)
cmd.Exec(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump", neDirTemp))
cmd.Exec(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 777 -R /usr/local/omc/tcpdump", neDirTemp))
// 命令拼装
logPath := fmt.Sprintf("%s/tcpdump.log", neDirTemp)
@@ -64,6 +64,7 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) {
if strings.Contains(cmdStr, "-G") {
filePath = fmt.Sprintf("%s/part_%%Y%%m%%d%%H%%M%%S.pcap ", neDirTemp)
}
cmd.Exec(fmt.Sprintf("sudo touch %s && sudo chmod o+w %s", logPath, logPath))
sendCmd := fmt.Sprintf("sudo timeout 60m sudo tcpdump -i any %s -w %s > %s 2>&1 & echo $!", cmdStr, filePath, logPath)
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -G 60 -W 6 -w /usr/local/omc/tcpdump/udm/001/20240817104241/part_%Y-%m-%d_%H:%M:%S.pcap > /usr/local/omc/tcpdump/udm/001/20240817104241/tcpdump.log 2>&1 & echo $!
// sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -w /usr/local/omc/tcpdump/udm/001/20240817105440/part_2024-08-17_10:54:40.pcap > /usr/local/omc/tcpdump/udm/001/20240817105440/tcpdump.log 2>&1 & echo $!
@@ -184,8 +185,8 @@ func (s *TCPdump) logFileLastLineToFile(PIDMap map[string]string) error {
taskCode := PIDMap["taskCode"]
// 存放文件目录 /usr/local/omc/tcpdump/udm/001/20240817104241
neDirTemp := fmt.Sprintf("/usr/local/omc/tcpdump/%s/%s/%s", strings.ToLower(neType), neId, taskCode)
// sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump", neDirTemp))
cmd.Exec(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump", neDirTemp))
// sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 777 -R /usr/local/omc/tcpdump", neDirTemp))
cmd.Exec(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 777 -R /usr/local/omc/tcpdump", neDirTemp))
lastLineMap := s.logFileLastLine(neType)
for lastLogFile, lastFileLine := range lastLineMap {
@@ -234,6 +235,7 @@ func (s *TCPdump) UPFTrace(neType, neId, cmdStr string) (string, error) {
return "", err
}
defer telnetClient.Close()
telnetClient.RunCMD("") // 再次排空信息
// 命令拼装
fileName := fmt.Sprintf("%s_%s_part_%s.pcap ", neInfo.NeType, neInfo.NeId, time.Now().Format("20060102150405"))
@@ -254,11 +256,11 @@ func (s *TCPdump) UPFTrace(neType, neId, cmdStr string) (string, error) {
// 结果截取
arr := strings.Split(output, "\r\n")
if len(arr) == 2 {
if len(arr) < 2 {
return "", fmt.Errorf("trace pacp run failed")
}
if len(arr) > 3 {
resMsg := arr[2]
if len(arr) == 3 {
resMsg := arr[1]
// pcap trace: unknown input `f file UPF_001_part_2024-08-19...'
// pcap trace: dispatch trace already enabled...
// pcap trace: dispatch trace already disabled...

View File

@@ -177,6 +177,8 @@ func byte2Iftype(val uint8) string {
ret = "N1/N2"
case 4:
ret = "N4"
case 5:
ret = "N5"
case 7:
ret = "N7"
case 8:
@@ -189,8 +191,16 @@ func byte2Iftype(val uint8) string {
ret = "N12"
case 13:
ret = "N13"
case 14:
ret = "N14"
case 15:
ret = "N15"
case 20:
ret = "N20"
case 22:
ret = "N22"
case 40:
ret = "N40"
}
return ret
}