feat: 网元信息Telnet客户端连接函数
This commit is contained in:
@@ -2,6 +2,7 @@ package service
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"be.ems/src/framework/utils/ssh"
|
"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/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -47,12 +48,16 @@ type INeInfo interface {
|
|||||||
// CheckUniqueNeTypeAndNeId 校验同类型下标识是否唯一
|
// CheckUniqueNeTypeAndNeId 校验同类型下标识是否唯一
|
||||||
CheckUniqueNeTypeAndNeId(neType, neId, id string) bool
|
CheckUniqueNeTypeAndNeId(neType, neId, id string) bool
|
||||||
|
|
||||||
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接
|
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接,注意结束后 Close()
|
||||||
NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error)
|
NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error)
|
||||||
|
|
||||||
// NeRunSSHCmd 网元主机的SSH客户端发送cmd命令
|
// NeRunSSHCmd 网元主机的SSH客户端发送cmd命令
|
||||||
NeRunSSHCmd(neType, neId, cmd string) (string, error)
|
NeRunSSHCmd(neType, neId, cmd string) (string, error)
|
||||||
|
|
||||||
|
// NeRunTelnetClient 网元主机的Telnet客户端-为创建相关连接,注意结束后 Close()
|
||||||
|
// num 是网元主机telnet 1:4100 2:5200
|
||||||
|
NeRunTelnetClient(neType, neId string, num int) (*telnet.ConnTelnet, error)
|
||||||
|
|
||||||
// neConfOAMRead 网元OAM配置文件读取
|
// neConfOAMRead 网元OAM配置文件读取
|
||||||
NeConfOAMRead(neType, neId string) (map[string]any, error)
|
NeConfOAMRead(neType, neId string) (map[string]any, error)
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import (
|
|||||||
"be.ems/src/framework/redis"
|
"be.ems/src/framework/redis"
|
||||||
"be.ems/src/framework/utils/parse"
|
"be.ems/src/framework/utils/parse"
|
||||||
"be.ems/src/framework/utils/ssh"
|
"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/model"
|
||||||
"be.ems/src/modules/network_element/repository"
|
"be.ems/src/modules/network_element/repository"
|
||||||
)
|
)
|
||||||
@@ -298,7 +299,7 @@ func (r *NeInfoImpl) CheckUniqueNeTypeAndNeId(neType, neId, id string) bool {
|
|||||||
return uniqueId == ""
|
return uniqueId == ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接
|
// NeRunSSHClient 网元主机的SSH客户端-为创建相关连接,注意结束后 Close()
|
||||||
func (r *NeInfoImpl) NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error) {
|
func (r *NeInfoImpl) NeRunSSHClient(neType, neId string) (*ssh.ConnSSH, error) {
|
||||||
neInfo := r.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
neInfo := r.SelectNeInfoByNeTypeAndNeID(neType, neId)
|
||||||
if neInfo.NeId != 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)
|
logger.Errorf("NeRunSSHClient Hosts %s not found", neInfo.HostIDs)
|
||||||
return nil, fmt.Errorf("neinfo host not found")
|
return nil, fmt.Errorf("neinfo host not found")
|
||||||
}
|
}
|
||||||
neHost := neInfo.Hosts[0]
|
neHost := neInfo.Hosts[0] // 网元主机ssh 0:22
|
||||||
if neHost.HostType != "ssh" {
|
if neHost.HostType != "ssh" {
|
||||||
logger.Errorf("NeRunSSHClient Hosts first HostType %s not ssh", neHost.HostType)
|
logger.Errorf("NeRunSSHClient Hosts first HostType %s not ssh", neHost.HostType)
|
||||||
return nil, fmt.Errorf("neinfo host type not ssh")
|
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
|
return output, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NeRunTelnetClient 网元主机的Telnet客户端-为创建相关连接,注意结束后 Close()
|
||||||
|
// num 是网元主机telnet 1:4100 2:5200
|
||||||
|
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配置文件默认格式数据
|
// neConfOAMData 网元OAM配置文件默认格式数据
|
||||||
func (r *NeInfoImpl) neConfOAMData() map[string]any {
|
func (r *NeInfoImpl) neConfOAMData() map[string]any {
|
||||||
return map[string]any{
|
return map[string]any{
|
||||||
|
|||||||
Reference in New Issue
Block a user