fix: scp网元文件复制到本地保留原先同名文件

This commit is contained in:
TsMask
2024-04-01 17:03:22 +08:00
parent 1d1c58475c
commit fed2c57700

View File

@@ -5,6 +5,7 @@ import (
"os" "os"
"os/exec" "os/exec"
"path/filepath" "path/filepath"
"time"
"be.ems/src/framework/config" "be.ems/src/framework/config"
"be.ems/src/framework/logger" "be.ems/src/framework/logger"
@@ -16,9 +17,9 @@ func FileSCPLocalToNe(neIp, localPath, nePath string) error {
// 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/
neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath) neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath)
cmd := exec.Command("scp", "-r", localPath, neDir) cmd := exec.Command("scp", "-r", localPath, neDir)
_, err := cmd.CombinedOutput() output, err := cmd.CombinedOutput()
if err != nil { if err != nil {
logger.Errorf("FileSCPLocalToNe %s", err.Error()) logger.Errorf("FileSCPLocalToNe %s => %s", output, err.Error())
return err return err
} }
return nil return nil
@@ -31,13 +32,23 @@ func FileSCPNeToLocal(neIp, nePath, localPath string) error {
logger.Errorf("FileSCPNeToLocal MkdirAll err %v", err) logger.Errorf("FileSCPNeToLocal MkdirAll err %v", err)
return err return err
} }
// 如果目标文件已经存在,先将目标文件重命名
if info, err := os.Stat(localPath); err == nil && !info.IsDir() {
ext := filepath.Ext(localPath)
name := localPath[0 : len(localPath)-len(ext)]
newName := fmt.Sprintf("%s-%s%s", name, time.Now().Format("20060102_150405"), ext)
err := os.Rename(localPath, newName)
if err != nil {
return err
}
}
usernameNe := config.Get("ne.user").(string) usernameNe := config.Get("ne.user").(string)
// scp user@remote-server:/path/to/remote/directory/ /path/to/local/file.txt // scp user@remote-server:/path/to/remote/directory/ /path/to/local/file.txt
neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath) neDir := fmt.Sprintf("%s@%s:%s", usernameNe, neIp, nePath)
cmd := exec.Command("scp", "-r", neDir, localPath) cmd := exec.Command("scp", "-r", neDir, localPath)
_, err := cmd.CombinedOutput() output, err := cmd.CombinedOutput()
if err != nil { if err != nil {
logger.Errorf("FileSCPNeToLocal %s", err.Error()) logger.Errorf("FileSCPNeToLocal %s => %s", output, err.Error())
return err return err
} }
return nil return nil