我正在嘗試使用結構來自動執行一些我在兩臺服務器上執行的管理工作。一般流程如下:以root用戶身份運行結構腳本
- SSH與本地用戶
- 運行:
sudo su -
成爲root(再次提供本地用戶密碼) - 做的工作爲根:)
不幸使用run('sudo su -')
阻止腳本的執行並允許用戶輸入。當我輸入exit
或Ctrl+D
時,scipt會恢復,但沒有root權限。
我在Switching user in Fabric看到了類似的問題,但因爲我不能改變/etc/sudoers
文件,其中包含以下行,我僅限於sudo su -
:
localuser ALL = /usr/bin/su -
我瀏覽布料的來源嘗試找到解決方法但沒有成功。
看看http://docs.fabfile.org/en/1.4.2/usage/env.html#sudo-prefix和這個例子:http://stackoverflow.com/questions/12641514/switch- to-different-user-using-fabric – alecxe 2013-02-27 14:37:16
使用'sudo_prefix ='su - -c''按照該文章中的描述需要root密碼。如果我使用'sudo_prefix ='sudo su - -c''我得到這個錯誤信息'對不起,用戶本地用戶不允許執行'/ usr/bin/su - -c/bin/bash -l -c pwd'根主機名.' – Marin 2013-02-27 16:34:30
設置'shell = False'似乎沒有效果。設置'pty = False'返回錯誤'sudo:沒有tty存在並且沒有指定askpass程序' – Marin 2013-02-28 07:15:13