From 7b39972f2c090cad204788772c4a1f50649db68e Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 24 Jul 2024 10:26:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=8D=E5=88=B6=E5=88=B0=E7=BD=91=E5=85=83?= =?UTF-8?q?=E7=AB=AF=E8=A6=86=E7=9B=96=E5=87=BD=E6=95=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ne_config_backup.go | 7 ++- .../service/ne_config_backup.impl.go | 48 +++++++++++++++++-- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/modules/network_element/service/ne_config_backup.go b/src/modules/network_element/service/ne_config_backup.go index 000f9ea3..3f8239f6 100644 --- a/src/modules/network_element/service/ne_config_backup.go +++ b/src/modules/network_element/service/ne_config_backup.go @@ -22,6 +22,9 @@ type INeConfigBackup interface { // DeleteByIds 批量删除信息 DeleteByIds(ids []string) (int64, error) - // NeConfigFileToLocal 网元备份文件到本地 - NeConfigFileToLocal(neInfo model.NeInfo) (string, error) + // NeConfigLocalToNe 网元配置文件复制到网元端覆盖 + NeConfigLocalToNe(neInfo model.NeInfo, localFile string) error + + // NeConfigNeToLocal 网元备份文件网元端复制到本地 + NeConfigNeToLocal(neInfo model.NeInfo) (string, error) } diff --git a/src/modules/network_element/service/ne_config_backup.impl.go b/src/modules/network_element/service/ne_config_backup.impl.go index 8426b9ea..e23d5142 100644 --- a/src/modules/network_element/service/ne_config_backup.impl.go +++ b/src/modules/network_element/service/ne_config_backup.impl.go @@ -72,8 +72,48 @@ func (r *NeConfigBackupImpl) DeleteByIds(ids []string) (int64, error) { return 0, fmt.Errorf("delete fail") } -// NeConfigFileToLocal 网元备份文件到本地 -func (r *NeConfigBackupImpl) NeConfigFileToLocal(neInfo model.NeInfo) (string, error) { +// NeConfigLocalToNe 网元配置文件复制到网元端覆盖 +func (r *NeConfigBackupImpl) NeConfigLocalToNe(neInfo model.NeInfo, localFile string) error { + neTypeLower := strings.ToLower(neInfo.NeType) + // 网管本地路径 + omcPath := "/usr/local/etc/omc/ne_config" + if runtime.GOOS == "windows" { + omcPath = fmt.Sprintf("C:%s", omcPath) + } + localDirPath := fmt.Sprintf("%s/%s/%s/backup/tmp_import", omcPath, neTypeLower, neInfo.NeId) + if err := file.UnZip(localFile, localDirPath); err != nil { + return fmt.Errorf("unzip err") + } + + // 网元主机的SSH客户端 + sshClient, err := NewNeInfoImpl.NeRunSSHClient(neInfo.NeType, neInfo.NeId) + if err != nil { + return fmt.Errorf("ne info ssh client err") + } + defer sshClient.Close() + // 网元主机的SSH客户端进行文件传输 + sftpClient, err := sshClient.NewClientSFTP() + if err != nil { + return fmt.Errorf("ne info sftp client err") + } + defer sftpClient.Close() + + // 网元配置端上的临时目录 + neDirTemp := fmt.Sprintf("/tmp/omc/ne_config/%s/%s", neTypeLower, neInfo.NeId) + sshClient.RunCMD(fmt.Sprintf("sudo rm -rf %s", neDirTemp)) + // 复制到网元端 + if err = sftpClient.CopyDirLocalToRemote(localDirPath, neDirTemp); err != nil { + return fmt.Errorf("copy config to ne err") + } + neEtcPath := fmt.Sprintf("/usr/local/etc/%s", neTypeLower) + sshClient.RunCMD(fmt.Sprintf("sudo cp -rf %s/* %s && sudo chmod 775 %s/*.yaml", neDirTemp, neEtcPath, neEtcPath)) + _ = os.RemoveAll(localDirPath) // 删除本地临时目录 + sshClient.RunCMD(fmt.Sprintf("sudo rm -rf %s", neDirTemp)) // 删除临时目录 + return nil +} + +// NeConfigNeToLocal 网元备份文件网元端复制到本地 +func (r *NeConfigBackupImpl) NeConfigNeToLocal(neInfo model.NeInfo) (string, error) { // 网元主机的SSH客户端 sshClient, err := NewNeInfoImpl.NeRunSSHClient(neInfo.NeType, neInfo.NeId) if err != nil { @@ -93,8 +133,8 @@ func (r *NeConfigBackupImpl) NeConfigFileToLocal(neInfo model.NeInfo) (string, e if runtime.GOOS == "windows" { omcPath = fmt.Sprintf("C:%s", omcPath) } - localDirPath := fmt.Sprintf("%s/%s/%s/backup/tmp", omcPath, neTypeLower, neInfo.NeId) - // 网元配置文件先复制到临时目录目录 + localDirPath := fmt.Sprintf("%s/%s/%s/backup/tmp_export", omcPath, neTypeLower, neInfo.NeId) + // 网元配置文件先复制到临时目录 nePath := fmt.Sprintf("/usr/local/etc/%s/*.yaml", neTypeLower) neDirTemp := fmt.Sprintf("/tmp/omc/ne_config/%s/%s", neTypeLower, neInfo.NeId) sshClient.RunCMD(fmt.Sprintf("sudo mkdir -p %s && sudo cp -rf %s %s", neDirTemp, nePath, neDirTemp))