2013-06-05 32 views
0

我的ubuntu服務器是通過ssh密鑰登錄的服務器,用戶是ubuntu。
和tomcat用戶是tomcat,密碼是tomcat。
我想通過Fabric啓動tomcat。 和我的方法是這樣的,登錄用戶是ubuntu,並且想要su用戶tomcat; 但我有一個錯誤su: must be run from a terminal
如果我刪除了pty=False
它將運行startup.sh但織物整理後,將關閉。如何使用sudo作爲另一個用戶啓動tomcat?

suuser(user='tomcat',pwd='tomcat',command= '/data/tomcat/%s/bin/startup.sh '%port,pty=False) 

def suuser(user,pwd,command='',pty=True): 

    with settings(password= "%s" % pwd, 
     sudo_prefix="su %s -c " % user, 
     sudo_prompt="Password:"): 
     sudo(command,pty=pty) 
+1

remove pty = False並將startup.sh放在命令後面。 suuser(user ='tomcat',pwd ='tomcat',command ='/data/tomcat/%s/bin/startup.sh&'%port) –

+0

remove pty = False並添加它運行sh但tomcat didn在設置登錄到服務器的env變量之後,使用run(「su - tomcat&/data/tomcat/{port}/bin/startup.sh」)啓動 – Reilost

+0

而不是suuser命令。 –

回答

0

刪除pty=False添加set -m指揮,像這樣:

command= 'set -m; /data/tomcat/%s/bin/startup.sh ' 

set -m打開作業控制,你可以在一個單獨的進程組運行的進程。

相關問題