diff --git a/README.md b/README.md index e0c32353..2c88408e 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,16 @@ ## 文件资源 -| 路径 | 说明 | -| --------------------- | -------------------------- | -| /usr/local/omc/static | 网管静态资源文件路径 | -| /usr/local/omc/upload | 网管上传文件资源路径 | -| /usr/local/omc/backup | 网管备份网元的数据路径 | -| /usr/local/etc/omc | 网管与网元之间相关文件 | -| /tmp/omc | 存放从网元拉取到本地的文件 | +| 路径 | 说明 | +| ---------------------- | -------------------------- | +| /usr/local/omc/static | 网管静态资源文件路径 | +| /usr/local/omc/upload | 网管上传文件资源路径 | +| /usr/local/omc/backup | 网管备份网元的数据路径 | +| /usr/local/omc/trace | 网管跟踪相关的数据路径 | +| /usr/local/omc/tcpdump | 网管 tcpdump 抓包件路径 | +| /usr/local/omc/packet | 网管信令抓包的数据路径 | +| /usr/local/etc/omc | 网管与网元之间相关文件 | +| /tmp/omc | 存放从网元拉取到本地的文件 | ## 端口 diff --git a/src/modules/network_element/controller/action.go b/src/modules/network_element/controller/action.go index 79722c99..6b3b5f24 100644 --- a/src/modules/network_element/controller/action.go +++ b/src/modules/network_element/controller/action.go @@ -83,7 +83,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") + sshClient.RunCMD("sudo mkdir -p /tmp/omc/push && sudo chmod 755 -R /tmp/omc") neFilePath := filepath.ToSlash(filepath.Join("/tmp/omc/push", filepath.Base(localFilePath))) // 复制到远程 if err = sftpClient.CopyFileLocalToRemote(localFilePath, neFilePath); err != nil { diff --git a/src/modules/network_element/service/ne_config_backup.go b/src/modules/network_element/service/ne_config_backup.go index 784fac87..cdd623e0 100644 --- a/src/modules/network_element/service/ne_config_backup.go +++ b/src/modules/network_element/service/ne_config_backup.go @@ -94,7 +94,7 @@ 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("mkdir -p /tmp/omc && sudo chmod 777 -R /tmp/omc && sudo rm -rf %s", neDirTemp)) + sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc && sudo rm -rf %s", neDirTemp)) // 复制到网元端 if err = sftpClient.CopyDirLocalToRemote(localDirPath, neDirTemp); err != nil { return fmt.Errorf("copy config to ne err") @@ -154,7 +154,7 @@ func (s NeConfigBackup) FileNeToLocal(neInfo model.NeInfo) (string, error) { localDirPath := fmt.Sprintf("%s/%s/%s/from_ne_tmp", omcPath, neTypeLower, neInfo.NeId) // 网元配置文件先复制到临时目录 - sshClient.RunCMD("mkdir -p /tmp/omc && sudo chmod 777 -R /tmp/omc") + sshClient.RunCMD("sudo mkdir -p /tmp/omc/ne_config && sudo chmod 755 -R /tmp/omc") neDirTemp := fmt.Sprintf("/tmp/omc/ne_config/%s/%s", neTypeLower, neInfo.NeId) if neTypeLower == "ims" { // ims目录 diff --git a/src/modules/trace/controller/packet.go b/src/modules/trace/controller/packet.go index 4eabce03..94ccf9e3 100644 --- a/src/modules/trace/controller/packet.go +++ b/src/modules/trace/controller/packet.go @@ -141,7 +141,7 @@ func (s *PacketController) FilePull(c *gin.Context) { return } fileName := fmt.Sprintf("%s.pcap", querys.TaskNo) - localFilePath := filepath.Join("/tmp/omc/packet", fileName) + localFilePath := filepath.Join("/usr/local/omc/packet", fileName) if runtime.GOOS == "windows" { localFilePath = fmt.Sprintf("C:%s", localFilePath) } diff --git a/src/modules/trace/controller/trace_task.go b/src/modules/trace/controller/trace_task.go index ae79e7a3..53f87757 100644 --- a/src/modules/trace/controller/trace_task.go +++ b/src/modules/trace/controller/trace_task.go @@ -121,7 +121,7 @@ func (s *TraceTaskController) FilePull(c *gin.Context) { } fileName := fmt.Sprintf("task_%s.pcap", querys.TraceId) - localFilePath := filepath.Join("/tmp/omc/trace", fileName) + localFilePath := filepath.Join("/usr/local/omc/trace", fileName) if runtime.GOOS == "windows" { localFilePath = fmt.Sprintf("C:%s", localFilePath) } diff --git a/src/modules/trace/service/packet.go b/src/modules/trace/service/packet.go index 5b92be60..eea0fd19 100644 --- a/src/modules/trace/service/packet.go +++ b/src/modules/trace/service/packet.go @@ -119,7 +119,7 @@ func (s *Packet) LiveStart(taskNo, deviceName, filterBPF string, outputPCAP bool var f *os.File if outputPCAP { // 网管本地路径 - localFilePath := fmt.Sprintf("/tmp/omc/packet/%s.pcap", taskNo) + localFilePath := fmt.Sprintf("/usr/local/omc/packet/%s.pcap", taskNo) if runtime.GOOS == "windows" { localFilePath = fmt.Sprintf("C:%s", localFilePath) } diff --git a/src/modules/trace/service/tcpdump.go b/src/modules/trace/service/tcpdump.go index e691b51d..baa772b8 100644 --- a/src/modules/trace/service/tcpdump.go +++ b/src/modules/trace/service/tcpdump.go @@ -54,9 +54,9 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) { } taskCode := time.Now().Format("20060102150405") - // 存放文件目录 /tmp/omc/tcpdump/udm/001/20240817104241 - neDirTemp := fmt.Sprintf("/tmp/omc/tcpdump/%s/%s/%s", strings.ToLower(neInfo.NeType), neInfo.NeId, taskCode) - sshClient.RunCMD(fmt.Sprintf("mkdir -p %s && sudo chmod 777 -R /tmp/omc", neDirTemp)) + // 存放文件目录 /usr/local/omc/tcpdump/udm/001/20240817104241 + neDirTemp := fmt.Sprintf("/usr/local/omc/tcpdump/%s/%s/%s", strings.ToLower(neInfo.NeType), neInfo.NeId, taskCode) + sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo chmod 755 -R /usr/local/omc/tcpdump", neDirTemp)) // 命令拼装 logPath := fmt.Sprintf("%s/tcpdump.log", neDirTemp) @@ -65,8 +65,8 @@ func (s *TCPdump) DumpStart(neType, neId, cmdStr string) (string, error) { filePath = fmt.Sprintf("%s/part_%%Y%%m%%d%%H%%M%%S.pcap ", neDirTemp) } 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 /tmp/omc/tcpdump/udm/001/20240817104241/part_%Y-%m-%d_%H:%M:%S.pcap > /tmp/omc/tcpdump/udm/001/20240817104241/tcpdump.log 2>&1 & echo $! - // sudo timeout 60m sudo tcpdump -i any -n -s 0 -v -w /tmp/omc/tcpdump/udm/001/20240817105440/part_2024-08-17_10:54:40.pcap > /tmp/omc/tcpdump/udm/001/20240817105440/tcpdump.log 2>&1 & echo $! + // 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 $! // // timeout 超时60分钟后发送kill命令,1分钟后强制终止命令。tcpdump -G 文件轮转间隔时间(秒) -W 文件轮转保留最近数量 // sudo timeout --kill-after=1m 60m sudo tcpdump -i any -n -s 0 -v -G 10 -W 7 -w /tmp/part_%Y%m%d%H%M%S.pcap > /tmp/part.log 2>&1 & echo $! @@ -119,11 +119,11 @@ func (s *TCPdump) DumpStop(neType, neId, taskCode string) ([]string, error) { } s.logFileLastLineToFile(PIDMap.(map[string]string), sshClient) - // 存放文件目录 /tmp/omc/tcpdump/udm/001/20240817104241 - neDirTemp := fmt.Sprintf("/tmp/omc/tcpdump/%s/%s/%s", strings.ToLower(neInfo.NeType), neInfo.NeId, taskCode) + // 存放文件目录 /usr/local/omc/tcpdump/udm/001/20240817104241 + neDirTemp := fmt.Sprintf("/usr/local/omc/tcpdump/%s/%s/%s", strings.ToLower(neInfo.NeType), neInfo.NeId, taskCode) // 命令拼装 sendCmd := fmt.Sprintf("pids=$(pgrep -P %s) && [ -n \"$pids\" ] && sudo kill $pids;sudo timeout 2s ls %s", pid, neDirTemp) - // pids=$(pgrep -P 1914341) && [ -n "$pids" ] && sudo kill $pids;sudo timeout 2s ls /tmp/omc/tcpdump/udm/001/20240817104241 + // pids=$(pgrep -P 1914341) && [ -n "$pids" ] && sudo kill $pids;sudo timeout 2s ls /usr/local/omc/tcpdump/udm/001/20240817104241 output, err := sshClient.RunCMD(sendCmd) output = strings.TrimSpace(output) if err != nil || strings.HasPrefix(output, "ls: ") { @@ -158,7 +158,7 @@ func (s *TCPdump) logFileLastLine(neType string, sshClient *ssh.ConnSSH) map[str } for _, v := range logFileArr { - lastLine, err := sshClient.RunCMD(fmt.Sprintf("sed -n '$=' %s", v)) + lastLine, err := sshClient.RunCMD(fmt.Sprintf("sudo sed -n '$=' %s", v)) lastLine = strings.TrimSpace(lastLine) if err != nil || strings.HasPrefix(lastLine, "sed: can't") { logger.Errorf("logFileLastLine err: %s => %s", lastLine, err.Error()) @@ -181,9 +181,9 @@ func (s *TCPdump) logFileLastLineToFile(PIDMap map[string]string, sshClient *ssh neType := PIDMap["neType"] neId := PIDMap["neId"] taskCode := PIDMap["taskCode"] - // 存放文件目录 /tmp/omc/tcpdump/udm/001/20240817104241 - sshClient.RunCMD("mkdir -p /tmp/omc && sudo chmod 777 -R /tmp/omc") - neDirTemp := fmt.Sprintf("/tmp/omc/tcpdump/%s/%s/%s", strings.ToLower(neType), neId, 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)) lastLineMap := s.logFileLastLine(neType, sshClient) for lastLogFile, lastFileLine := range lastLineMap { @@ -193,8 +193,8 @@ func (s *TCPdump) logFileLastLineToFile(PIDMap map[string]string, sshClient *ssh startFileLine = "1" // 起始行号从第一行开始 } outputFile := fmt.Sprintf("%s/%s", neDirTemp, filepath.Base(lastLogFile)) - sendCmd := fmt.Sprintf("sed -n \"%s,%sp\" \"%s\" > \"%s\"", startFileLine, lastFileLine, lastLogFile, outputFile) - // sed -n "1,5p" "/var/log/amf.log" > "/tmp/omc/tcpdump/amf/001/20241008141336/amf.log" + sendCmd := fmt.Sprintf("sudo sed -n \"%s,%sp\" \"%s\" | sudo tee \"%s\" > /dev/null", startFileLine, lastFileLine, lastLogFile, outputFile) + // sudo sed -n "1,5p" "/var/log/amf.log" | sudo tee "/usr/local/omc/tcpdump/amf/001/20241008141336/amf.log" > /dev/null output, err := sshClient.RunCMD(sendCmd) if err != nil || strings.HasPrefix(output, "stderr:") { logger.Errorf("logFileLastLineToFile err: %s => %s", strings.TrimSpace(output), err.Error()) diff --git a/src/modules/trace/service/trace_task_udp_data.go b/src/modules/trace/service/trace_task_udp_data.go index e4390bd5..7bd8c6f6 100644 --- a/src/modules/trace/service/trace_task_udp_data.go +++ b/src/modules/trace/service/trace_task_udp_data.go @@ -34,7 +34,7 @@ func traceHandler(data []byte) (*TraceMsgToOamTraceData, error) { } // 输出到文件 - filePath := fmt.Sprintf("/tmp/omc/trace/task_%d.pcap", decodeData.NfTraceMsg.TraceId) + filePath := fmt.Sprintf("/usr/local/omc/trace/task_%d.pcap", decodeData.NfTraceMsg.TraceId) if runtime.GOOS == "windows" { filePath = fmt.Sprintf("C:%s", filePath) }