Skip to content

Instantly share code, notes, and snippets.

@brainsik
Created May 13, 2011 23:57
Show Gist options
  • Save brainsik/971526 to your computer and use it in GitHub Desktop.
Save brainsik/971526 to your computer and use it in GitHub Desktop.
sudo -H for Fabric
import fabric.api
from contextlib import contextmanager
@contextmanager
def shell(new_shell):
old_shell, env.shell = env.shell, new_shell
yield
env.shell = old_shell
def sudo(*args, **kwargs):
if not kwargs.get('use_home', True):
return fabric.api.sudo(*args, **kwargs)
# simulate 'sudo -H'
user = kwargs.get('user', 'root')
with shell("HOME=~%s %s" % (user, env.shell)):
return fabric.api.sudo(*args, **kwargs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment