python - Call /etc/sudoers commands from fabric -
in /etc/sudoers have:
# allow picky user restart own gunicorn process picky all=(all) nopasswd: /usr/bin/supervisorctl restart picky i can indeed run command picky user:
$ su picky $ sudo supervisorctl restart picky in fabfile.py have following:
from fabric.api import sudo def restart(): sudo("supervisorctl restart picky") however, when run fabric file, still prompts password:
[picky@myhost] sudo: supervisorctl restart picky [picky@myhost] out: sudo password: how can run sudo commands inside fabric such don't need provide password?
edit:
i've noticed works:
from fabric.api import run def restart(): run("sudo supervisorctl restart picky")
as noted in https://stackoverflow.com/questions/3737003/can-i-prevent-fabric-from-prompting-me-for-a-sudo-password, when use fabric sudo command command sent shell. real command executed contains call /bin/bash in it, why doesn't match sudoer entry.
to around that, add shell=false call:
from fabric.api import sudo def restart(): sudo("supervisorctl restart picky", shell=false) you might have add full path supervisorctl.
Comments
Post a Comment