2012-08-09 158 views
39

我需要在Jenkins中運行一個shell腳本,而不是默認用戶。我需要改變什麼?如何在Jenkins中以root身份運行腳本?

我sudoers文件是這樣的:

# User privilege specification 
root ALL=(ALL) ALL 
igx  ALL=(ALL) ALL 
%wheel ALL=(ALL) ALL 

# Allow members of group sudo to execute any command 
# (Note that later entries override this, so you might need to move 
%sudo ALL=(ALL) ALL 
# 
#includedir /etc/sudoers.d 

# Members of the admin group may gain root privileges 
%admin ALL=(ALL) NOPASSWD:ALL 
root ALL=(ALL) ALL 
jenkins ALL=NOPASSWD: /var/lib/jenkins/workspace/ing00112/trunk/source/ 
jenkins ALL=(ALL) NOPASSWD:ALL 
#Defaults:jenkins !requiretty 
+0

的可能重複[如何運行詹金斯作爲超級用戶?(http://stackoverflow.com/questions/ 11841140/how-to-run-jenkins-as-super-user) – 2012-08-09 23:36:54

回答

67

您必須運行使用sudo腳本:

sudo /path/to/script 

但你必須允許jenkins之前囤的腳本/etc/sudoers

jenkins ALL = NOPASSWD: /path/to/script 
+0

@Igore謝謝你...你是100%正確的...我用expect命令以超級用戶的身份運行腳本:) – Mahesh 2013-01-17 07:09:23

+2

如果你想執行shell腳本更改爲:「jenkins ALL = NOPASSWD:/ bin/sh,/ path/to/script」然後可以運行「sudo sh/path/to/script」 – 2014-09-02 16:21:43

+2

僅用於鏈接http:/ /www.atrixnet.com/allow-an-unprivileged-user-to-run-a-certain-command-with-sudo/可以提供幫助;即時我的情況我需要使用不是一個腳本,而是一個命令'scp';你的提示也有幫助; thx – Yauhen 2015-03-15 20:15:28

4

我不知道我來晚了在這個問題上的一方,但參考的緣故,我想我會扔我2C在這裏:我用的是SSH插件詹金斯做到這一點(簡單配置localhost目標)。通過這種方式,我可以直接在Jenkins中包含腳本(如正常的「Execute shell」步驟),而不是使用sudo來調用外部腳本。

7

@Iub Chubin的回答是100%正確的,但從來沒有用普通的編輯器打開sudoer文件。始終使用visudo

只需鍵入

sudo visudo 

這將帶你到/etc/sudoers,並在保存它會確保有在格式沒有錯誤。

如果您在sudoer文件的錯誤,你將失去sudo訪問,因此請務必使用visudo

相關問題