refactor: 优化UDM导出解密数据逻辑,替换SSH文件传输为本地复制

This commit is contained in:
TsMask
2025-10-10 17:46:00 +08:00
parent 55b4db7f40
commit d711c7c014
2 changed files with 10 additions and 24 deletions

View File

@@ -8,6 +8,7 @@ import (
"strings"
"time"
"be.ems/src/framework/cmd"
"be.ems/src/framework/constants"
"be.ems/src/framework/i18n"
"be.ems/src/framework/reqctx"
@@ -692,8 +693,8 @@ func (s *UDMAuthController) ExportDec(c *gin.Context) {
// 发送MML
// 导出解密的ki和opc 需要执行 dec authdat:imsi=all
// 生成文件 /user/local/etc/udm/authdata.txt
cmd := "dec authdat:imsi=all"
data, err := telnet.ConvertToStr(telnetClient, cmd)
cmdStr := "dec authdat:imsi=all"
data, err := telnet.ConvertToStr(telnetClient, cmdStr)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
@@ -701,32 +702,17 @@ func (s *UDMAuthController) ExportDec(c *gin.Context) {
// 命令ok时
if strings.Contains(data, "ok") {
// 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient("UDM", neId)
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
defer sshClient.Close()
// 网元主机的SSH客户端进行文件传输
sftpClient, err := sshClient.NewClientSFTP()
if err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
defer sftpClient.Close()
// 复制到本地
nePath := "/usr/local/etc/udm/authdata.txt"
localFilePath := filepath.Join("/tmp/omc/pull", filepath.Base(nePath))
if runtime.GOOS == "windows" {
localFilePath = fmt.Sprintf("C:%s", localFilePath)
}
if err = sftpClient.CopyFileRemoteToLocal(nePath, localFilePath); err != nil {
if err = file.CopyFile(nePath, localFilePath); err != nil {
c.JSON(200, resp.ErrMsg(err.Error()))
return
}
sshClient.RunCMD(fmt.Sprintf("sudo rm -rf %s", nePath))
cmd.Exec(fmt.Sprintf("sudo rm -rf %s", nePath))
defer os.Remove(localFilePath)
c.FileAttachment(localFilePath, filepath.Base(nePath))
return

View File

@@ -224,11 +224,11 @@ func (s *TCPdump) UPFTrace(neType, neId, cmdStr string) (string, error) {
return "", fmt.Errorf("app.common.noNEInfo")
}
// 网元主机的SSH客户端
sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId)
if err != nil {
return "", err
}
defer sshClient.Close()
// sshClient, err := s.neInfoService.NeRunSSHClient(neInfo.NeType, neInfo.NeId)
// if err != nil {
// return "", err
// }
// defer sshClient.Close()
// 网元主机的Telnet客户端
telnetClient, err := s.neInfoService.NeRunTelnetClient("UPF", neInfo.NeId, 2)
if err != nil {