fix 远程网元scp复制文件
This commit is contained in:
@@ -561,23 +561,23 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// 文件名
|
// 文件名
|
||||||
fileName := fmt.Sprintf("OMC_AUTH_USER_IMPORT_%s_%d_%s", neId, time.Now().UnixMilli(), fileHeader.Filename)
|
fileName := fmt.Sprintf("OMC_AUTH_USER_IMPORT_%s_%d_%s", neId, time.Now().UnixMilli(), fileHeader.Filename)
|
||||||
filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName)
|
localPath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName)
|
||||||
dstPath := conf.Get("mml.upload").(string)
|
nePath := conf.Get("mml.upload").(string)
|
||||||
// 输出保存文件
|
// 输出保存文件
|
||||||
err = ctx.SaveUploadedFile(r, filePath)
|
err = ctx.SaveUploadedFile(r, localPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复制到远程
|
// 复制到远程
|
||||||
err = file.FileNeSCP(neInfo.Ip, filePath, dstPath)
|
err = file.FileSCPLocalToNe(neInfo.Ip, localPath, nePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := fmt.Sprintf("import authdat:path=%s", fmt.Sprintf("%s/%s", dstPath, fileName))
|
msg := fmt.Sprintf("import authdat:path=%s", fmt.Sprintf("%s/%s", nePath, fileName))
|
||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
||||||
@@ -589,12 +589,12 @@ func (s *UdmUserApi) UdmAuthUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
||||||
data := file.ReadCSVFile(filePath)
|
data := file.ReadCSVFile(localPath)
|
||||||
neId = "-"
|
neId = "-"
|
||||||
s.authUser.InsertCSV(neId, data)
|
s.authUser.InsertCSV(neId, data)
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
||||||
data := file.ReadTxtFile(filePath)
|
data := file.ReadTxtFile(localPath)
|
||||||
neId = "-"
|
neId = "-"
|
||||||
s.authUser.InsertTxt(neId, data)
|
s.authUser.InsertTxt(neId, data)
|
||||||
}
|
}
|
||||||
@@ -1125,23 +1125,23 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// 文件名
|
// 文件名
|
||||||
fileName := fmt.Sprintf("OMC_SUB_USER_IMPORT_%s_%d_%s", neId, time.Now().UnixMilli(), fileHeader.Filename)
|
fileName := fmt.Sprintf("OMC_SUB_USER_IMPORT_%s_%d_%s", neId, time.Now().UnixMilli(), fileHeader.Filename)
|
||||||
filePath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName)
|
localPath := fmt.Sprintf("%s/upload/mml/%s", conf.Get("ne.omcdir"), fileName)
|
||||||
dstPath := conf.Get("mml.upload").(string)
|
nePath := conf.Get("mml.upload").(string)
|
||||||
// 输出保存文件
|
// 输出保存文件
|
||||||
err = ctx.SaveUploadedFile(r, filePath)
|
err = ctx.SaveUploadedFile(r, localPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 复制到远程
|
// 复制到远程
|
||||||
err = file.FileNeSCP(neInfo.Ip, filePath, dstPath)
|
err = file.FileSCPLocalToNe(neInfo.Ip, localPath, nePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
ctx.JSON(w, 200, result.ErrMsg(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
msg := fmt.Sprintf("import udmuser:path=%s", fmt.Sprintf("%s/%s", dstPath, fileName))
|
msg := fmt.Sprintf("import udmuser:path=%s", fmt.Sprintf("%s/%s", nePath, fileName))
|
||||||
|
|
||||||
// 发送MML
|
// 发送MML
|
||||||
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
data, err := mmlclient.MMLSendMsgToString(neInfo.Ip, msg)
|
||||||
@@ -1152,12 +1152,12 @@ func (s *UdmUserApi) UdmSubUserImport(w http.ResponseWriter, r *http.Request) {
|
|||||||
// 命令ok时
|
// 命令ok时
|
||||||
if strings.Contains(data, "ok") {
|
if strings.Contains(data, "ok") {
|
||||||
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
if strings.HasSuffix(fileHeader.Filename, ".csv") {
|
||||||
data := file.ReadCSVFile(filePath)
|
data := file.ReadCSVFile(localPath)
|
||||||
neId = "-"
|
neId = "-"
|
||||||
s.subUser.InsertCSV(neId, data)
|
s.subUser.InsertCSV(neId, data)
|
||||||
}
|
}
|
||||||
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
if strings.HasSuffix(fileHeader.Filename, ".txt") {
|
||||||
data := file.ReadTxtFile(filePath)
|
data := file.ReadTxtFile(localPath)
|
||||||
neId = "-"
|
neId = "-"
|
||||||
s.subUser.InsertTxt(neId, data)
|
s.subUser.InsertTxt(neId, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,22 +2,48 @@ package file
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path/filepath"
|
||||||
|
|
||||||
"ems.agt/lib/core/conf"
|
"ems.agt/lib/core/conf"
|
||||||
"ems.agt/lib/log"
|
"ems.agt/lib/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
// 网元NE 文件复制到远程文件夹
|
// 网元NE 文件复制到远程文件
|
||||||
func FileNeSCP(neIp, filePath, dstPath string) error {
|
func FileSCPLocalToNe(neIp, localPath, nePath string) error {
|
||||||
usernameNe := conf.Get("ne.user").(string)
|
usernameNe := conf.Get("ne.user").(string)
|
||||||
// scp /path/to/local/file.txt user@remote-server:/path/to/remote/directory/
|
// scp /path/to/local/file.txt user@remote-server:/path/to/remote/directory/
|
||||||
dstDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, dstPath)
|
neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath)
|
||||||
cmd := exec.Command("scp", "-r", filePath, dstDir)
|
cmd := exec.Command("scp", "-r", localPath, neDir)
|
||||||
out, err := cmd.CombinedOutput()
|
out, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.Infof("FileNeSCP %s", string(out))
|
log.Infof("FileSCPLocalToNe %s", string(out))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 网元NE 远程文件复制到本地文件
|
||||||
|
func FileSCPNeToLocal(neIp, nePath, localPath string) error {
|
||||||
|
// 获取文件所在的目录路径
|
||||||
|
dirPath := filepath.Dir(localPath)
|
||||||
|
|
||||||
|
// 确保文件夹路径存在
|
||||||
|
err := os.MkdirAll(dirPath, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("创建文件夹失败 CreateFile %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
usernameNe := conf.Get("ne.user").(string)
|
||||||
|
// scp user@remote-server:/path/to/remote/directory/ /path/to/local/file.txt
|
||||||
|
neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath)
|
||||||
|
cmd := exec.Command("scp", "-r", neDir, localPath)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Infof("FileSCPNeToLocal %s", string(out))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user