Python code aus einer string variable auslesen und ausführen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

Hi, ich habe eine Variable (todo) in der mein Python code steht, welchen ich gerne ausführen möchte, aber leider nicht weiß "HowTo" .. kann mir zufällig jemand weiterhelfen?

Example:

todo="""
from system import os

var1=1
var2=1
var3=var1+var2
"""
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und warum hast du Code in einem String?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Was du suchst ist exec bzw. eval:

Code: Alles auswählen

>>> exec "a=3"
>>> a
3
>>> eval("sum([1,2,3])")
6
MFG HerrHagen
Mal schaun wie lange es dauert bis die ersten erbosten Kommentare kommen, dass man exec/eval auf keinen Fall verwenden sollte...
EDIT: hmmm, ... es hat -3min gedauert... - schneller als gedacht
Zuletzt geändert von HerrHagen am Freitag 5. Juni 2009, 08:18, insgesamt 1-mal geändert.
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

ich lese diesen aus einer zentralen Quelle aus, in der ich Regeln für bestimme Prozesse hinterlege (DB-basiert).
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

Perfekt "HerrHagen"

vielen Dank für die schnelle Hilfe :)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich hoffe du weisst, dass das ein ganz schlechter Ansatz ist ;) Was ist denn dein eigentliches Problem? Was willst du erreichen?
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

hi, das der Ansatz nicht optimal hinsichtlich der technischen Umsetzung ist mag richtig sein aber aus Anwendersicht recht einfach.

Hintergrund:
Wir haben Python in unseren Applikationsserver integriert und wollen dem Anwender eine Möglichkeit geben in dem Systemstammdaten Regeln für bestimmte Prozesse in SQL oder Python zu hinterlegen die mehrfach verwendet werden können.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dir ist aber schon klar, dass der Anwender dann beliebigen Code mit den Rechten der Anwendung ausführen kann, oder? Was du vor hast ist eine ganz (ganz, ganz, ..) schlechte und gefährliche Idee. Wenn ein Anwender Regeln definieren können soll, dann biete eine eigene Sprache dazu an.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

db sind auch immer eine potentielle sicherheitslücke.
mit dem vorgehen verschärst du die folgen eines erfolgreichen angriffs massiv.
http://www.kinderpornos.info
stwe85
User
Beiträge: 7
Registriert: Freitag 5. Juni 2009, 07:57

Keine angst Roles & Rights sind sicher :)

Nur weil ein Anwender diese FUnktionen nutzen kann heisst es nicht das es jeder kann :)
Antworten