#!/bin/bash # stm32-cloud-env.sh — 云端嵌入式工作站环境验证脚本 # 用法: source stm32-cloud-env.sh (source 以添加 alias) # 或: bash stm32-cloud-env.sh (仅打印状态) echo "═══════════════════════════════════════════" echo " STM32 云端工作站 — 完整工具链状态" echo " 2026-06-14 | 共 14 件套" echo "═══════════════════════════════════════════" check_tool() { if command -v "$1" &>/dev/null; then echo " ✅ $1: $($1 --version 2>&1 | head -1)" else echo " ❌ $1: 未安装" fi } # ─── 编译链 ─── check_tool "arm-none-eabi-gcc" check_tool "arm-none-eabi-objcopy" check_tool "make" check_tool "cmake" check_tool "ninja" # ─── 代码审查 ─── check_tool "cppcheck" # ─── 调试与协议分析 ─── check_tool "tshark" check_tool "socat" # ─── 进程与终端管理 ─── check_tool "tmux" # ─── 知识库检索 ─── check_tool "rg" # ─── 版本控制 ─── check_tool "git" # ─── 穿透隧道 ─── check_tool "frps" check_tool "frpc" # ─── Python 工具链(隔离 venv) ─── PYBIN="/opt/stm32-tools/bin/python3" if [ -f "$PYBIN" ]; then echo " ✅ pymodbus: $($PYBIN -c 'import pymodbus; print(pymodbus.__version__)')" echo " ✅ pyserial: $($PYBIN -c 'import serial; print(serial.__version__)')" echo " ✅ inject_deformed_packet: $(wc -l < ~/.agents/knowledge/inject_deformed_packet.py) 行" else echo " ❌ stm32-tools venv: 未找到" fi echo "" echo "═══ 知识资产 ═══" echo " 📚 ~/.agents/knowledge/" ls -lh ~/.agents/knowledge/ 2>/dev/null | awk '{print " " $NF " (" $5 ")"}' echo "" echo "═══ 技能 ═══" echo " 🧠 ~/.agents/skills/solar-tracker-pro/ ✅" echo "" echo "═══ 模板 ═══" echo " 📐 /root/stm32-makefile-template/" echo " ├── Makefile — GNU Make 编译" echo " ├── CMakeLists.txt — CMake + Ninja 极速编译" echo " └── stm32-cloud-env.sh — 本脚本" echo "" echo "═══ 手册 ═══" echo " 📖 ~/.agents/knowledge/ubuntu_tools_handbook.md" echo "" # ─── 便捷 alias(仅在 source 时生效) ─── if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then alias modbus-sim='$PYBIN -m pymodbus.server' echo " 💡 alias 'modbus-sim' 已加载" echo " 用法: modbus-sim --host 0.0.0.0 --port 502" echo "" fi echo "═══════════════════════════════════════════" echo " 架构就绪,随时开火。🌙" echo "═══════════════════════════════════════════"