ipmi-fan-control/sensor-server.py

45 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Simple HTTP server for lm-sensors data
Run this on your Proxmox host or server with lm-sensors installed
"""
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import subprocess
import sys
class SensorHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/sensors':
try:
result = subprocess.run(['sensors', '-j'],
capture_output=True, text=True)
data = json.loads(result.stdout)
self.send_response(200)
self.send_header('Content-Type', 'application/json')
self.send_header('Access-Control-Allow-Origin', '*')
self.end_headers()
self.wfile.write(json.dumps(data).encode())
except Exception as e:
self.send_response(500)
self.end_headers()
self.wfile.write(json.dumps({'error': str(e)}).encode())
else:
self.send_response(404)
self.end_headers()
def log_message(self, format, *args):
pass # Suppress logs
if __name__ == '__main__':
port = int(sys.argv[1]) if len(sys.argv) > 1 else 8888
server = HTTPServer(('0.0.0.0', port), SensorHandler)
print(f"Sensor server running on http://0.0.0.0:{port}/sensors")
print("Press Ctrl+C to stop")
try:
server.serve_forever()
except KeyboardInterrupt:
print("\nShutting down...")
server.shutdown()