45 lines
1.5 KiB
Python
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() |