2009-10-12 73 views
1

我正在使用SSHEXEC ant任務對遠程linux機器運行SSH腳本。對來自Ant SSH任務(SSHEXEC)的shell提示做出響應

這工作得很好,直到我嘗試並調用一個提示用戶輸入的ksh腳本。該腳本更改當前用戶(如su)。它提示用戶輸入change_request_id和change_request_reason。因此,在一個外殼通常使用這個命令應該是這樣的:

change_user deploy_user 
Please enter the changes request number for doing this: 1234 
Please enter the changes request reason: Because I can 
<deploy_user> 

但是當我運行從SSHEXEC這些命令,它就會以第一次提示「請輸入更改申請數量這樣做的:」並停止。儘管我通過SSHEXEC對此提示進行了響應,但它仍然卡在這裏。

不幸的是,我們無權修改或複製change_user shell腳本。

我想知道是否有某種方式可以使用SSHEXEC,它可以通過命令發出提示答案。

任何幫助,將不勝感激。

回答

2

您是否可以將另一個腳本放在與接受命令行參數的更改用戶腳本相同的服務器上,然後調用更改請求腳本本身?例如。 in ksh:

#!/usr/bin/ksh 
# 
# $1 is change request number 
# $2 is change request reason 
# 
/path/to/change_request_cmd <<PARAMS 
$1 
$2 
PARAMS 

讓SSHEXEC調用這個腳本可能會更容易。

+0

感謝威廉。您的解決方案看起來很理想,但是當我嘗試它時,它隨着我正在運行的腳本更改當前用戶而中斷,因此在它完成之前發生錯誤。除了這個問題,您的解決方案確實允許我回答腳本提示。我想現在是解決這個更改用戶問題的問題!乾杯。 – Ben 2009-10-12 07:19:27

+1

您可以設置sudo讓您以另一個用戶的身份運行該命令 - 例如使用sudo -u otheruser作爲/ path/to/change_request_cmd的前綴,並配置/ etc/sudoers以允許不使用密碼。 – 2009-10-13 10:02:51