#!/bin/bash # 执行 shell 命令 # 高风险:需要确认码审批 set -e read -r input CMD=$(echo "$input" | python3 -c " import sys, json d = json.load(sys.stdin) print(d.get('command', '')) " 2>/dev/null) TIMEOUT=$(echo "$input" | python3 -c " import sys, json d = json.load(sys.stdin) print(d.get('timeout', 30)) " 2>/dev/null) if [ -z "$CMD" ]; then echo "请提供 command 参数" exit 1 fi # 安全限制:禁止危险命令 LOWER_CMD=$(echo "$CMD" | tr '[:upper:]' '[:lower:]') for DANGEROUS in "rm -rf /" "mkfs" "dd if=" ":(){ :|:& };:" "> /dev/" "wget http" "curl http"; do if echo "$LOWER_CMD" | grep -q "$DANGEROUS"; then echo "禁止执行危险命令: $DANGEROUS" exit 1 fi done # 输出前 N 行防止刷屏 OUTPUT=$(timeout "$TIMEOUT" bash -c "$CMD" 2>&1 || echo "命令执行失败(退出码: $?)") echo "$OUTPUT" | head -50 [ "$(echo "$OUTPUT" | wc -l)" -gt 50 ] && echo "...(输出已截断,共 $(echo "$OUTPUT" | wc -l) 行)"