Sto lavorando su uno strumento (Python, può o non può essere importante) che consentirà a un utente di mantenere un file di configurazione contenente shell e / o codice di linguaggio arbitrario da eseguire su particolari eventi e intervalli. Il codice potenzialmente coinvolgerà più istruzioni.
Capisco che ci sono potenziali rischi comportamentali e di sicurezza associati all'esecuzione di codice arbitrario da un file, ma non penso che questo sia un problema perché il file di configurazione è gestito solo dall'utente finale. Tuttavia, fammi sapere se trascuro qualcosa di importante.
La mia domanda principale: qual è il modo migliore per archiviare questo codice in modo configurabile?
Alcuni concetti che sto considerando di memorizzare il codice ...
In un file di configurazione condiviso (che molte librerie Python già cercano):
# setup.cfg
[my_program]
command_1 = cd /tmp && touch foobar
In un file YAML:
# my_program.yaml
command_1: cd /tmp && touch foobar
In un file sorgente come argomenti a subprocess.call()
:
# settings.py
command_1 = [['cd', '/tmp'], ['touch', 'foobar']] # requires special handling of 'cd'
In un file sorgente come funzione:
# settings.py
import os
import subprocess
def command_1():
os.chdir('/tmp')
subprocess.call(['touch', 'foobar'])