ics-simlab-config-gen-claude/scripts/diagnose_runtime.sh

70 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
#
# Diagnose ICS-SimLab runtime issues
#
set -e
echo "============================================================"
echo "ICS-SimLab Runtime Diagnostics"
echo "============================================================"
SCENARIO_DIR="$(cd "$(dirname "$0")" && pwd)/outputs/scenario_run"
echo ""
echo "1. Checking scenario files..."
if [ -f "$SCENARIO_DIR/configuration.json" ]; then
echo " ✓ configuration.json exists"
else
echo " ✗ configuration.json missing"
fi
if [ -f "$SCENARIO_DIR/logic/plc1.py" ]; then
echo " ✓ logic/plc1.py exists"
else
echo " ✗ logic/plc1.py missing"
fi
if [ -f "$SCENARIO_DIR/logic/plc2.py" ]; then
echo " ✓ logic/plc2.py exists"
if grep -q "_safe_callback" "$SCENARIO_DIR/logic/plc2.py"; then
echo " ✓ plc2.py has _safe_callback (retry fix present)"
else
echo " ✗ plc2.py missing _safe_callback (retry fix NOT present)"
fi
else
echo " ✗ logic/plc2.py missing"
fi
echo ""
echo "2. Checking Docker..."
if command -v docker &> /dev/null; then
echo " ✓ Docker installed"
echo ""
echo "3. Running containers:"
sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E "NAME|plc|hil|hmi" || echo " (none)"
echo ""
echo "4. All containers (including stopped):"
sudo docker ps -a --format "table {{.Names}}\t{{.Status}}" | grep -E "NAME|plc|hil|hmi" || echo " (none)"
echo ""
echo "5. Docker networks:"
sudo docker network ls | grep -E "NAME|ot_network" || echo " (none)"
else
echo " ✗ Docker not found"
fi
echo ""
echo "============================================================"
echo "To start ICS-SimLab:"
echo " ./test_simlab.sh"
echo ""
echo "To view live PLC2 logs:"
echo " sudo docker logs <plc2_container_name> -f"
echo ""
echo "To stop all containers:"
echo " cd ~/projects/ICS-SimLab-main/curtin-ics-simlab && sudo ./stop.sh"
echo "============================================================"