feat: 移除ssh客户端改为本地bash
This commit is contained in:
@@ -6,11 +6,11 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/cmd"
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/reqctx"
|
||||
"be.ems/src/framework/resp"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
"be.ems/src/modules/tool/service"
|
||||
wsService "be.ems/src/modules/ws/service"
|
||||
|
||||
@@ -140,14 +140,14 @@ func (s *IPerfController) Run(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 网元主机的SSH客户端
|
||||
sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.NeType, query.NeId)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.NeType, query.NeId)
|
||||
// if err != nil {
|
||||
// c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
// return
|
||||
// }
|
||||
// defer sshClient.Close()
|
||||
// ssh连接会话
|
||||
clientSession, err := sshClient.NewClientSession(query.Cols, query.Rows)
|
||||
clientSession, err := cmd.NewClientSession(query.Cols, query.Rows)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg("neinfo ssh client session new err"))
|
||||
return
|
||||
|
||||
@@ -5,11 +5,11 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/cmd"
|
||||
"be.ems/src/framework/i18n"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/reqctx"
|
||||
"be.ems/src/framework/resp"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
"be.ems/src/modules/tool/model"
|
||||
"be.ems/src/modules/tool/service"
|
||||
wsService "be.ems/src/modules/ws/service"
|
||||
@@ -175,14 +175,14 @@ func (s *PingController) Run(c *gin.Context) {
|
||||
}
|
||||
|
||||
// 网元主机的SSH客户端
|
||||
sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.NeType, query.NeId)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
return
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// sshClient, err := neService.NewNeInfo.NeRunSSHClient(query.NeType, query.NeId)
|
||||
// if err != nil {
|
||||
// c.JSON(200, resp.ErrMsg(err.Error()))
|
||||
// return
|
||||
// }
|
||||
// defer sshClient.Close()
|
||||
// ssh连接会话
|
||||
clientSession, err := sshClient.NewClientSession(query.Cols, query.Rows)
|
||||
clientSession, err := cmd.NewClientSession(query.Cols, query.Rows)
|
||||
if err != nil {
|
||||
c.JSON(200, resp.ErrMsg("neinfo ssh client session new err"))
|
||||
return
|
||||
|
||||
@@ -4,14 +4,14 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/cmd"
|
||||
"be.ems/src/framework/config"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/resp"
|
||||
"be.ems/src/framework/ssh"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
wsModel "be.ems/src/modules/ws/model"
|
||||
)
|
||||
|
||||
@@ -26,20 +26,20 @@ func (s *IPerf) Version(meType, neId, version string) (string, error) {
|
||||
if version != "V2" && version != "V3" {
|
||||
return "", fmt.Errorf("iperf version is required V2 or V3")
|
||||
}
|
||||
cmd := "iperf3 --version"
|
||||
cmdStr := "iperf3 --version"
|
||||
if version == "V2" {
|
||||
cmd = "iperf -v"
|
||||
cmdStr = "iperf -v"
|
||||
}
|
||||
|
||||
// 网元主机的SSH客户端
|
||||
sshClient, err := neService.NewNeInfo.NeRunSSHClient(meType, neId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// sshClient, err := neService.NewNeInfo.NeRunSSHClient(meType, neId)
|
||||
// if err != nil {
|
||||
// return "", err
|
||||
// }
|
||||
// defer sshClient.Close()
|
||||
|
||||
// 检查是否安装iperf
|
||||
output, err := sshClient.RunCMD(cmd)
|
||||
output, err := cmd.Exec(cmdStr)
|
||||
if err != nil {
|
||||
if version == "V2" && strings.HasSuffix(err.Error(), "status 1") { // V2 版本
|
||||
return strings.TrimSpace(output), nil
|
||||
@@ -56,28 +56,28 @@ func (s *IPerf) Install(meType, neId, version string) error {
|
||||
}
|
||||
|
||||
// 网元主机的SSH客户端
|
||||
sshClient, err := neService.NewNeInfo.NeRunSSHClient(meType, neId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer sshClient.Close()
|
||||
// 网元主机的SSH客户端进行文件传输
|
||||
sftpClient, err := sshClient.NewClientSFTP()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer sftpClient.Close()
|
||||
// sshClient, err := neService.NewNeInfo.NeRunSSHClient(meType, neId)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer sshClient.Close()
|
||||
// // 网元主机的SSH客户端进行文件传输
|
||||
// sftpClient, err := sshClient.NewClientSFTP()
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// defer sftpClient.Close()
|
||||
|
||||
nePath := "/tmp"
|
||||
depPkg := "sudo dpkg -i"
|
||||
depDir := "assets/dependency/iperf3/deb"
|
||||
|
||||
// 检查平台类型
|
||||
if _, err := sshClient.RunCMD("sudo dpkg --version"); err == nil {
|
||||
if _, err := cmd.Exec("sudo dpkg --version"); err == nil {
|
||||
depPkg = "sudo dpkg -i"
|
||||
depDir = "assets/dependency/iperf3/deb"
|
||||
// sudo apt remove iperf3 libiperf0 libsctp1 libsctp-dev lksctp-tools
|
||||
} else if _, err := sshClient.RunCMD("sudo yum --version"); err == nil {
|
||||
} else if _, err := cmd.Exec("sudo yum --version"); err == nil {
|
||||
depPkg = "sudo rpm -Uvh --nosignature --reinstall --force"
|
||||
depDir = "assets/dependency/iperf3/rpm"
|
||||
// yum remove iperf3 iperf3-help.noarch
|
||||
@@ -106,7 +106,7 @@ func (s *IPerf) Install(meType, neId, version string) error {
|
||||
defer localFile.Close()
|
||||
// 创建远程文件
|
||||
remotePath := fmt.Sprintf("%s/%s", nePath, d.Name())
|
||||
remoteFile, err := sftpClient.Client.Create(remotePath)
|
||||
remoteFile, err := os.Create(remotePath)
|
||||
if err != nil {
|
||||
return fmt.Errorf("iperf %s file remote error", version)
|
||||
}
|
||||
@@ -120,13 +120,12 @@ func (s *IPerf) Install(meType, neId, version string) error {
|
||||
|
||||
// 删除软件包
|
||||
defer func() {
|
||||
pkgRemove := fmt.Sprintf("sudo rm %s", strings.Join(neFilePaths, " "))
|
||||
sshClient.RunCMD(pkgRemove)
|
||||
cmd.Execf("sudo rm %s", strings.Join(neFilePaths, " "))
|
||||
}()
|
||||
|
||||
// 安装软件包
|
||||
pkgInstall := fmt.Sprintf("%s %s", depPkg, strings.Join(neFilePaths, " "))
|
||||
if _, err := sshClient.RunCMD(pkgInstall); err != nil {
|
||||
_, err = cmd.Execf("%s %s", depPkg, strings.Join(neFilePaths, " "))
|
||||
if err != nil {
|
||||
return fmt.Errorf("iperf %s install error", version)
|
||||
}
|
||||
return err
|
||||
@@ -160,13 +159,13 @@ func (s *IPerf) Run(client *wsModel.WSClient, reqMsg wsModel.WSRequest) {
|
||||
var command string
|
||||
command, err = s.parseOptions(reqMsg.Data)
|
||||
if command != "" && err == nil {
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
_, err = sshClientSession.Write(command)
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
_, err = localClientSession.Write(command)
|
||||
}
|
||||
case "ctrl-c":
|
||||
// 模拟按下 Ctrl+C
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
_, err = sshClientSession.Write("\u0003\n")
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
_, err = localClientSession.Write("\u0003\n")
|
||||
case "resize":
|
||||
// 会话窗口重置
|
||||
msgByte, _ := json.Marshal(reqMsg.Data)
|
||||
@@ -176,8 +175,8 @@ func (s *IPerf) Run(client *wsModel.WSClient, reqMsg wsModel.WSRequest) {
|
||||
}
|
||||
err = json.Unmarshal(msgByte, &data)
|
||||
if err == nil {
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
err = sshClientSession.Session.WindowChange(data.Rows, data.Cols)
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
localClientSession.WindowChange(data.Cols, data.Rows)
|
||||
}
|
||||
default:
|
||||
err = fmt.Errorf("message type %s not supported", reqMsg.Type)
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/cmd"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/resp"
|
||||
"be.ems/src/framework/ssh"
|
||||
neService "be.ems/src/modules/network_element/service"
|
||||
"be.ems/src/modules/tool/model"
|
||||
wsModel "be.ems/src/modules/ws/model"
|
||||
@@ -173,13 +173,17 @@ func (s *Ping) Run(client *wsModel.WSClient, reqMsg wsModel.WSRequest) {
|
||||
var command string
|
||||
command, err = s.parseOptions(reqMsg.Data)
|
||||
if command != "" && err == nil {
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
_, err = sshClientSession.Write(command)
|
||||
// sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
// _, err = sshClientSession.Write(command)
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
_, err = localClientSession.Write(command)
|
||||
}
|
||||
case "ctrl-c":
|
||||
// 模拟按下 Ctrl+C
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
_, err = sshClientSession.Write("\u0003\n")
|
||||
// sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
// _, err = sshClientSession.Write("\u0003\n")
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
_, err = localClientSession.Write("\u0003\n")
|
||||
case "resize":
|
||||
// 会话窗口重置
|
||||
msgByte, _ := json.Marshal(reqMsg.Data)
|
||||
@@ -189,8 +193,10 @@ func (s *Ping) Run(client *wsModel.WSClient, reqMsg wsModel.WSRequest) {
|
||||
}
|
||||
err = json.Unmarshal(msgByte, &data)
|
||||
if err == nil {
|
||||
sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
err = sshClientSession.Session.WindowChange(data.Rows, data.Cols)
|
||||
// sshClientSession := client.ChildConn.(*ssh.SSHClientSession)
|
||||
// err = sshClientSession.Session.WindowChange(data.Rows, data.Cols)
|
||||
localClientSession := client.ChildConn.(*cmd.LocalClientSession)
|
||||
localClientSession.WindowChange(data.Cols, data.Rows)
|
||||
}
|
||||
default:
|
||||
err = fmt.Errorf("message type %s not supported", reqMsg.Type)
|
||||
|
||||
Reference in New Issue
Block a user