我正在尝试使用fabric来自动化一些我正在几个服务器上执行的管理工作。一般流程如下:
sudo su -
成为根用户(再次提供本地用户密码)不幸的是,使用run('sudo su -')
会阻塞脚本的执行并允许用户输入。当我键入exit
或Ctrl+D
时,scpt将恢复,但没有根权限。
我在Switching user in Fabric中看到过类似的问题,但我仅限于sudo su -
,因为我不允许更改包含以下行的/etc/sudoers
文件:
localuser ALL = /usr/bin/su -
我浏览了织物的来源,试图找到解决办法,但没有成功。
你的问题有几种解决方法。首先,要使用
sudo
运行命令。您可以使用fabric方法sudo
,而不是run
,即runs a shell command on a remote host, with superuser privileges
(sudo ref)。例如,这些命令使用
sudo
执行:另一个想法是要包装一组命令(需要
sudo
ed)。 您可以使用Fabric上下文管理器(ref)来实现这一点。特别是,您可以使用prefix
或settings
。例如:
将询问您一次根密码,然后作为根执行命令。 您可以选择存储密码的设置。
以下问题有一个解决方案
Sorry, user localuser is not allowed to execute '/usr/bin/su - -c /bin/bash -l -c pwd' as root on hostname.
你可以试试sudo('mkdir ~/test_fabric',shell=False)
。使用paramshell
来避免bash param-l
。面对与您相同的问题(只有管理员允许的
sudo su - user
,不允许的sudo -u user -c cmd
),下面是我使用fabric
的工作解决方案:相关问题 更多 >
编程相关推荐