瀏覽代碼

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

niujiuru 2 周之前
父節點
當前提交
025abdb618
共有 2 個文件被更改,包括 11 次插入0 次删除
  1. 二進制
      package/yfkj_ssh_client_v1.0.0.1.tar.gz
  2. 11 0
      sshd/client/invoker.go

二進制
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