From aa608ff891a93486878733bbbee883aa597e5eb8 Mon Sep 17 00:00:00 2001 From: ssongliu Date: Mon, 13 Mar 2023 10:04:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20cmd.Exec=20=E5=A2=9E=E5=8A=A0=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/v1/file_upload.go | 11 ++++---- backend/app/api/v1/terminal.go | 11 ++++++++ backend/app/service/snapshot.go | 2 +- backend/utils/cmd/cmd.go | 26 +++++++++++++++++-- .../container/container/terminal/index.vue | 1 - 5 files changed, 42 insertions(+), 9 deletions(-) diff --git a/backend/app/api/v1/file_upload.go b/backend/app/api/v1/file_upload.go index 4d39c2330..cc79c4cce 100644 --- a/backend/app/api/v1/file_upload.go +++ b/backend/app/api/v1/file_upload.go @@ -2,15 +2,16 @@ package v1 import ( "fmt" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "github.com/1Panel-dev/1Panel/backend/app/api/v1/helper" "github.com/1Panel-dev/1Panel/backend/constant" "github.com/1Panel-dev/1Panel/backend/global" "github.com/1Panel-dev/1Panel/backend/utils/files" "github.com/gin-gonic/gin" - "io/ioutil" - "os" - "path/filepath" - "strconv" ) func mergeChunks(fileName string, fileDir string, dstDir string, chunkCount int) error { @@ -73,7 +74,7 @@ func (b *BaseApi) UploadChunkFiles(c *gin.Context) { filename := c.PostForm("filename") fileDir := filepath.Join(global.CONF.System.DataDir, "upload", filename) - os.MkdirAll(fileDir, 0755) + _ = os.MkdirAll(fileDir, 0755) filePath := filepath.Join(fileDir, filename) emptyFile, err := os.Create(filePath) diff --git a/backend/app/api/v1/terminal.go b/backend/app/api/v1/terminal.go index b09723df5..379efcfaf 100644 --- a/backend/app/api/v1/terminal.go +++ b/backend/app/api/v1/terminal.go @@ -9,6 +9,7 @@ import ( "github.com/1Panel-dev/1Panel/backend/app/api/v1/helper" "github.com/1Panel-dev/1Panel/backend/constant" "github.com/1Panel-dev/1Panel/backend/global" + "github.com/1Panel-dev/1Panel/backend/utils/cmd" "github.com/1Panel-dev/1Panel/backend/utils/copier" "github.com/1Panel-dev/1Panel/backend/utils/ssh" "github.com/1Panel-dev/1Panel/backend/utils/terminal" @@ -155,6 +156,16 @@ func (b *BaseApi) ContainerWsSsh(c *gin.Context) { return } defer wsConn.Close() + + cmds := fmt.Sprintf("docker exec %s %s", containerID, command) + if len(user) != 0 { + cmds = fmt.Sprintf("docker exec -u %s %s %s", user, containerID, command) + } + stdout, err := cmd.Exec(cmds) + if wshandleError(wsConn, errors.WithMessage(err, stdout)) { + return + } + commands := fmt.Sprintf("docker exec -it %s %s", containerID, command) if len(user) != 0 { commands = fmt.Sprintf("docker exec -it -u %s %s %s", user, containerID, command) diff --git a/backend/app/service/snapshot.go b/backend/app/service/snapshot.go index f94b4478d..31af28af7 100644 --- a/backend/app/service/snapshot.go +++ b/backend/app/service/snapshot.go @@ -850,7 +850,7 @@ func (u *SnapshotService) handleTar(sourceDir, targetDir, name, exclusionRules s exStr += exclude } - commands := fmt.Sprintf("tar -zcf %s %s -C %s .", targetDir+"/"+name, exStr, sourceDir) + commands := fmt.Sprintf("tar --warning=no-file-changed -zcf %s %s -C %s .", targetDir+"/"+name, exStr, sourceDir) global.LOG.Debug(commands) stdout, err := cmd.Exec(commands) if err != nil { diff --git a/backend/utils/cmd/cmd.go b/backend/utils/cmd/cmd.go index c4f46806e..e56f4c087 100644 --- a/backend/utils/cmd/cmd.go +++ b/backend/utils/cmd/cmd.go @@ -13,7 +13,18 @@ func Exec(cmdStr string) (string, error) { cmd.Stderr = &stderr err := cmd.Run() if err != nil { - return stderr.String(), err + errMsg := "" + if len(stderr.String()) != 0 { + errMsg = fmt.Sprintf("stderr: %s", stderr.String()) + } + if len(stdout.String()) != 0 { + if len(errMsg) != 0 { + errMsg = fmt.Sprintf("%s; stdout: %s", errMsg, stdout.String()) + } else { + errMsg = fmt.Sprintf("stdout: %s", stdout.String()) + } + } + return errMsg, err } return stdout.String(), nil } @@ -25,7 +36,18 @@ func Execf(cmdStr string, a ...interface{}) (string, error) { cmd.Stderr = &stderr err := cmd.Run() if err != nil { - return stderr.String(), err + errMsg := "" + if len(stderr.String()) != 0 { + errMsg = fmt.Sprintf("stderr: %s", stderr.String()) + } + if len(stdout.String()) != 0 { + if len(errMsg) != 0 { + errMsg = fmt.Sprintf("%s; stdout: %s", errMsg, stdout.String()) + } else { + errMsg = fmt.Sprintf("stdout: %s", stdout.String()) + } + } + return errMsg, err } return stdout.String(), nil } diff --git a/frontend/src/views/container/container/terminal/index.vue b/frontend/src/views/container/container/terminal/index.vue index 741f201b6..8ad63a3f1 100644 --- a/frontend/src/views/container/container/terminal/index.vue +++ b/frontend/src/views/container/container/terminal/index.vue @@ -87,7 +87,6 @@ const acceptParams = async (params: DialogProps): Promise => { }; const onChangeCommand = async () => { - console.log('addqwd'); form.command = ''; };