feat: 网元信息Telnet客户端连接函数

This commit is contained in:
TsMask
2024-06-14 17:00:16 +08:00
parent 4109afcc5b
commit 4b1acc3e25
2 changed files with 40 additions and 3 deletions

View File

@@ -2,6 +2,7 @@ package service
import (
"be.ems/src/framework/utils/ssh"
"be.ems/src/framework/utils/telnet"
"be.ems/src/modules/network_element/model"
)
@@ -47,12 +48,16 @@ type INeInfo interface {
// CheckUniqueNeTypeAndNeId 校验同类型下标识是否唯一
CheckUniqueNeTypeAndNeId(neType, neId, id string) bool
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接,注意结束后 Close()
NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error)
// NeRunSSHCmd 网元主机的SSH客户端发送cmd命令
NeRunSSHCmd(neType, neId, cmd string) (string, error)
// NeRunTelnetClient 网元主机的Telnet客户端-为创建相关连接,注意结束后 Close()
// num 是网元主机telnet 14100 25200
NeRunTelnetClient(neType, neId string, num int) (*telnet.ConnTelnet, error)
// neConfOAMRead 网元OAM配置文件读取
NeConfOAMRead(neType, neId string) (map[string]any, error)

View File

@@ -13,6 +13,7 @@ import (
"be.ems/src/framework/redis"
"be.ems/src/framework/utils/parse"
"be.ems/src/framework/utils/ssh"
"be.ems/src/framework/utils/telnet"
"be.ems/src/modules/network_element/model"
"be.ems/src/modules/network_element/repository"
)
@@ -298,7 +299,7 @@ func (r *NeInfoImpl) CheckUniqueNeTypeAndNeId(neType, neId, id string) bool {
return uniqueId == ""
}
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接,注意结束后 Close()
func (r *NeInfoImpl) NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error) {
neInfo := r.SelectNeInfoByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId {
@@ -315,7 +316,7 @@ func (r *NeInfoImpl) NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error) {
logger.Errorf("NeRunSSHClient Hosts %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host not found")
}
neHost := neInfo.Hosts[0]
neHost := neInfo.Hosts[0] // 网元主机ssh 022
if neHost.HostType != "ssh" {
logger.Errorf("NeRunSSHClient Hosts first HostType %s not ssh", neHost.HostType)
return nil, fmt.Errorf("neinfo host type not ssh")
@@ -354,6 +355,37 @@ func (r *NeInfoImpl) NeRunSSHCmd(neType, neId, cmd string) (string, error) {
return output, nil
}
// NeRunTelnetClient 网元主机的Telnet客户端-为创建相关连接,注意结束后 Close()
// num 是网元主机telnet 14100 25200
func (r *NeInfoImpl) NeRunTelnetClient(neType, neId string, num int) (*telnet.ConnTelnet, error) {
neInfo := r.SelectNeInfoByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId {
logger.Errorf("NeRunTelnetClient NeType:%s NeID:%s not found", neType, neId)
return nil, fmt.Errorf("neinfo not found")
}
// 取主机信息
if neInfo.HostIDs == "" {
logger.Errorf("NeRunTelnetClient NeType:%s NeID:%s hostId not found", neType, neId)
return nil, fmt.Errorf("neinfo hostId not found")
}
neInfo.Hosts = NewNeHostImpl.neHostRepository.SelectByIds(strings.Split(neInfo.HostIDs, ","))
if len(neInfo.Hosts) <= 0 {
logger.Errorf("NeRunTelnetClient Hosts %s not found", neInfo.HostIDs)
return nil, fmt.Errorf("neinfo host not found")
}
neHost := neInfo.Hosts[num]
// 创建链接Telnet客户端
var connTelnet telnet.ConnTelnet
neHost.CopyTo(&connTelnet)
telnetClient, err := connTelnet.NewClient()
if err != nil {
logger.Errorf("NeRunTelnetClient NewClient err => %s", err.Error())
return nil, fmt.Errorf("neinfo telnet client new err")
}
return telnetClient, nil
}
// neConfOAMData 网元OAM配置文件默认格式数据
func (r *NeInfoImpl) neConfOAMData() map[string]any {
return map[string]any{