2009-06-11 11 views
0

Ich versuche, einen Python-Server zu erstellen, der es mir ermöglicht, root-Befehle auf einem Centos-Server remote auszuführen, ich möchte auch, dass der Server mit dem Ergebnis des Befehls antworten kann .Versuch, einen Python-Server zu erstellen

ich eine andere Frage hier gefunden zu haben, die einen grundlegenden Python-Server hat, jedoch wirft sie einen Fehler, ist der Code:

#!/usr/bin/python 
import os 
import socket 
print " Loading Bindings..." 
settings = {} 
line = 0 
for each in open('/root/actions.txt', 'r'): 
line = line + 1 
    each = each.rstrip() 
    if each <> "": 
    if each[0] <> '#': 
     a = each.partition(':') 
     if a[2]: 
     settings[a[0]] = a[2] 
     else: 
     print " Err @ line",line,":",each 
print " Starting Server...", 
port = 12345 
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
s.bind(("", port)) 
print "OK." 
print " Listening on port:", port 
while True: 
    datagram = s.recv(1024) 
    if not datagram: 
     break 
    print "Rx Cmd:", datagram 
    if settings.has_key(datagram): 
     print "Launch:", settings[datagram] 
     os.system(settings[datagram]+" &") 
s.close() 

Wenn ich python vzctl.py mit laufen. Ich erhalte den folgenden Fehler:

File "vzctl.py", line 9 
    each = each.rstrip() 
    ^
SyntaxError: invalid syntax 

Hat jemand eine Idee des Fehlers haben, und wenn es möglich wäre, die Funktion des Servers reagiert mit der Ausgabe des Befehls hinzuzufügen.

Sie können die Quelle dieses Skript sehen unter: How can I have a PHP script run a shell script as root?

Danke, Ashley

+1

nicht verwenden <> verwenden = siehe hier: http://docs.python.org/library/stdtypes.html#comparisons – SilentGhost

Antwort

2

Sie Einbuchtung auf dem gleichen Niveau für jede verschachtelte Anweisung im gesamten Code zu halten brauchen.

+0

Im jetzt bekommen: a = each.partition (':') AttributeError: 'str' Objekt hat kein Attribut 'partition' Nach dem Ändern der Einrückungen richtig und <> zu ändern! = – AshleyUK

+0

Vergessen zu sagen Fehler ist bei Zeile 12 – AshleyUK

+0

Partition wurde in Python 2.5 hinzugefügt, wenn Sie früher verwenden Versionen von Python, erhalten Sie diesen Fehler. – SilentGhost

2

Eine andere Anmerkung: Warum nicht TwistedMatrix verwenden?

+0

Es scheint ein Webserver zu sein, oder lese ich die Website unbemerkt? – AshleyUK

+0

Es ist ein Netzwerk-Framework: Sie können Ihren eigenen Netzwerk-Server entwickeln. Werfen Sie einen Blick hier http://twistedmatrix.com/projects/core/documentation/examples/ – Keeper

+0

Sobald Sie Ihr Gehirn umdrehen, werden Sie viel glücklicher sein, als zu versuchen, Ihre eigenen zu rollen. Beachten Sie jedoch, dass die Dokumentation ein wenig spärlich ist. – DrBloodmoney

Verwandte Themen