#!/bin/bash # IPMI Controller - lm-sensors HTTP Server Setup # Run this on your Proxmox/Dell server to expose sensors over HTTP set -e echo "🌡️ IPMI Controller - lm-sensors HTTP Setup" echo "============================================" # Check if running as root if [ "$EUID" -ne 0 ]; then echo "❌ Please run as root (sudo)" exit 1 fi # Install lm-sensors if not present echo "" echo "📦 Checking lm-sensors..." if ! command -v sensors &> /dev/null; then echo "Installing lm-sensors..." apt-get update apt-get install -y lm-sensors echo "" echo "🔧 Running sensors-detect..." echo "Answer YES to all questions or use default values" sensors-detect --auto else echo "✓ lm-sensors already installed" fi # Install netcat if not present if ! command -v nc &> /dev/null; then echo "Installing netcat..." apt-get install -y netcat-openbsd fi # Create the HTTP sensors server script SERVER_SCRIPT="/usr/local/bin/sensors-http-server.sh" echo "" echo "📝 Creating HTTP server script..." cat > "$SERVER_SCRIPT" << 'EOF' #!/bin/bash # lm-sensors HTTP Server for IPMI Controller # Serves sensor data on port 8888 PORT=${1:-8888} echo "Starting lm-sensors HTTP server on port $PORT..." echo "Access via: http://$(hostname -I | awk '{print $1}'):$PORT" while true; do { echo -e "HTTP/1.1 200 OK\r" echo -e "Content-Type: text/plain\r" echo -e "Access-Control-Allow-Origin: *\r" echo -e "\r" sensors -u 2>/dev/null || echo "Error reading sensors" } | nc -l -p "$PORT" -q 1 done EOF chmod +x "$SERVER_SCRIPT" echo "✓ Created $SERVER_SCRIPT" # Create systemd service SERVICE_FILE="/etc/systemd/system/sensors-http.service" echo "" echo "🔧 Creating systemd service..." cat > "$SERVICE_FILE" << EOF [Unit] Description=lm-sensors HTTP Server for IPMI Controller After=network.target [Service] Type=simple ExecStart=$SERVER_SCRIPT 8888 Restart=always RestartSec=5 User=root [Install] WantedBy=multi-user.target EOF echo "✓ Created $SERVICE_FILE" # Reload systemd and enable service echo "" echo "🚀 Enabling and starting service..." systemctl daemon-reload systemctl enable sensors-http.service systemctl start sensors-http.service # Check status sleep 2 if systemctl is-active --quiet sensors-http.service; then echo "✓ Service is running!" echo "" echo "🌐 HTTP Endpoint: http://$(hostname -I | awk '{print $1}'):8888" echo "" echo "Test with: curl http://$(hostname -I | awk '{print $1}'):8888" else echo "⚠️ Service failed to start. Check logs:" echo " journalctl -u sensors-http.service -f" fi echo "" echo "📋 Management Commands:" echo " Start: sudo systemctl start sensors-http" echo " Stop: sudo systemctl stop sensors-http" echo " Status: sudo systemctl status sensors-http" echo " Logs: sudo journalctl -u sensors-http -f" echo "" echo "✅ Setup complete!"