Webkonsole mit Python/ajax

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

Hallo,

hat jemand das folgende Szenario schonmal versucht bzw. ein hilfreiches Tutorial im Internet gesehen?

Ich will in einer Webapplication eine Eingabe haben die über Ajax HTTP Request an eine cherrypy Funktion sendet. Die Eingabe sollte eine Unix Kommando sein, welches von der Funktion ausgeführt wird.

Hierdurch soll eine Webapplication, die meine Xeninstanzen verwaltet um die Möglichkeit der Konsole via Web erweitert werden.

Vielen Dank für jede Hilfe
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

moesibaer hat geschrieben:Die Eingabe sollte eine Unix Kommando sein, welches von der Funktion ausgeführt wird.
Hallo moesibaer!

Willkommen im Python-Forum!

Das könnte ein Ansatz dafür sein:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-

import os
import cherrypy
import subprocess


class Root(object):
    
    def command(self, cmd = ""):
        if not cmd:
            return "No command! >> http://localhost:8080/command?cmd=dir"
        cherrypy.response.headers["Content-Type"] = "text/plain"
        proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
        return proc.stdout.read()
    command.exposed = True


def main():
    cherrypy.quickstart(Root())
    

if __name__ == "__main__":
    main()
Um die Gefahren die dadurch entstehen musst du dich selber kümmern. Das darf niemals eine öffentliche Webanwendung werden. Das darf nur lokal oder gut abgesichert laufen. !!!

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Hier findest du TryPy, was eine Pythonimplentation von Try Ruby! sein soll.

Für Unixkommandos auszuführen, kann man das Standardmodul ``subprocess`` benutzen.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

So etwas gibt es doch schon :) Google -> Ajaxterm ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
moesibaer
User
Beiträge: 16
Registriert: Donnerstag 27. Dezember 2007, 15:54
Kontaktdaten:

perfekt! ajaxterm scheint ein guter Ansatz zu sein! Vielen Dank für eure Mühen!
Antworten