2011-12-09 14 views
17

Sto usando fabric per avviare un comando su un server remoto.
Vorrei avviare questo comando come utente diverso (né quello connesso né root).Fabric - sudo -u

def colstat(): 
    run('python manage.py collectstatic --noinput') 

Cercando

def colstat(): 
    sudo('-u www-data python manage.py collectstatic --noinput') 

Oviously questo non funzionerà perché -u sarà considerato come un comando e non l'opzione di sudo

out:/bin/bash: - u: comando non trovato

(www-data è l'utente che deve eseguire il comando)
Come posso utilizzare www-data per eseguire il comando da Fabric?

+0

Vale la pena notare che penso che un'applicazione non debba richiedere privilegi sudo. Penso che dovremmo essere sempre in grado di gestire cose come ACL. –

risposta

42

A giudicare dalla documentation:

sudo('python manage.py collectstatic --noinput', user='www-data') 

HTH!

+1

Grazie, non ho visto [questa parte] (http://docs.fabfile.org/en/1.3.3/api/core/operations.html?highlight=sudo#fabric.operations.sudo) nel doc. Soprattutto perché è documentato con quasi il mio esempio :(Scusa –