Server Status und Steuerung mit Lighttpd und Python

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
arghargh
User
Beiträge: 81
Registriert: Donnerstag 4. September 2008, 22:26

Server Status und Steuerung mit Lighttpd und Python

Beitragvon arghargh » Freitag 17. Oktober 2008, 18:32

Hi,

ein kleiner ARM-Debian-lighttpd (Linksys NSLU-2) Webserver soll über ein Web-Interface gesteuert werden. Python ist über mod_cgi angebunden und ich kann ein print "Content-type:text/plain\n\nhello world" ausführen.

Jetzt möchte ich mir Prozesse und Speicherauslastung anzeigen lassen und ein Skript für Neustart und Shutdown fabrizieren. Das muss noch nichtmal irgendwelche HTTP-Methoden unterstützen, der einfache Aufruf http://server/shutdown.py reicht mir schon.

Für die Status kann ich mir vorstellen, das ähnlich popen("ps -aux") zu erreichen. Aber wie ist das mit Runterfahren und Neustart?
Der Interpreter muss auf jeden Fall noch die Ausgabe der Befehle zum Client leiten, und sich dann selbst beenden.

Danke schonmal!
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 20. Oktober 2008, 19:37

Ich vermute, ein über ``subprocess`` abgesetztes ``halt``, ``init 0`` oder ``init 6`` wird sich schon seinen Weg bahnen und alles um sich herum abhängen ;)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 20. Oktober 2008, 20:45

In dem Fall reicht wohl schon ein ``subprocess.call()``. Am besten via sudo den Befehl zum herunterfahren absetzen und nicht auf die Idee kommen das Python-Skript setsuid zu setzen :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Beitragvon lunar » Montag 20. Oktober 2008, 20:52

Was nicht funktionieren würde ...
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Beitragvon veers » Montag 20. Oktober 2008, 21:44

Kein Problem, einfach setuid auf den Interpreter :wink:
My Website - 29a.ch
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 20. Oktober 2008, 22:11

lunar hat geschrieben:Was nicht funktionieren würde ...

Hmm? Wenn man für den User unter dem der Interpreter läuft, einen Eintrag mit NOPASSWD in der sudoers hat, der die ausführung vom entsprechenden Shutdown-Befehl erlaubt, wo sollte da das Problem sein?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
lunar

Beitragvon lunar » Montag 20. Oktober 2008, 22:22

Mein Posting bezog sich auf den letzten Teil deines Postings: "[...] das Python-Skript setsuid zu setzen. [...]".
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 20. Oktober 2008, 22:49

lunar hat geschrieben:Mein Posting bezog sich auf den letzten Teil deines Postings: "[...] das Python-Skript setsuid zu setzen. [...]".

Ah stimmt, hast recht. Das ist mir entfallen. Wenn man ausreichend verrückt ist, könnte man aber einen binären Preloader reinmachen, der dann das Skript aus seinem Inhalt extrahiert und als root ausführt ;)
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder