Przeglądaj źródła

优化修改sshd客户端代码, 使其支持管道、重定向等高级功能, 包装成shell命令

niujiuru 2 tygodni temu
rodzic
commit
025abdb618
2 zmienionych plików z 11 dodań i 0 usunięć
  1. BIN
      package/yfkj_ssh_client_v1.0.0.1.tar.gz
  2. 11 0
      sshd/client/invoker.go

BIN
package/yfkj_ssh_client_v1.0.0.1.tar.gz


+ 11 - 0
sshd/client/invoker.go

@@ -2,6 +2,8 @@ package main
 
 import (
 	"encoding/json"
+	"fmt"
+	"strings"
 	"time"
 
 	"hnyfkj.com.cn/rtu/linux/utils/jsonrpc2"
@@ -53,6 +55,15 @@ func (c *MQTTCoupler) ping() (*jsonrpc2.Response, error) {
 // 执行命令
 func (c *MQTTCoupler) exec(
 	cmd string) (*shell.ExecuteResult, error) {
+	if strings.ContainsAny(cmd, "&") {
+		return nil, fmt.Errorf("禁止启动后台任务")
+	}
+
+	if strings.ContainsAny(cmd, "|>;") || strings.Contains(cmd, "\n") {
+		safeCmd := strings.ReplaceAll(cmd, "'", "'\\''")
+		cmd = fmt.Sprintf("sh -c '%s'", safeCmd) // 包装成 shell 命令, 支持管道等高级功能
+	}
+
 	params := struct {
 		ClientID string `json:"client_id"`
 		shell.ExecuteParams