2015-02-08 27 views
0

我想使用本地腳本在服務器上遠程安裝ruby。以下是我的代碼:使用rvm install安裝Ruby時使用腳本自動輸入密碼?

sshpass -p ****** ssh [email protected]$HOST 'bash -s' <<'ENDSSH' 
    export PATH=$PATH:/home/hx/.rvm/bin/ 

    rvm install 2.2.0 
ENDSSH 

當我運行此腳本,出現錯誤說:

Error running 'requirements_debian_update_system ruby-2.2.0', 
showing last 15 lines of /home/hx/.rvm/log/1423392690_ruby-2.2.0/update_system.log 
++ [[ -d /usr/sbin ]] 
++ [[ :/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/hx/.rvm/bin/:/home/hx/.rvm/bin: != *\:\/\u\s\r\/\s\b\i\n\:* ]] 
++ for sbin_path in /sbin /usr/sbin /usr/local/sbin 
++ [[ -d /usr/local/sbin ]] 
++ [[ :/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/hx/.rvm/bin/:/home/hx/.rvm/bin: != *\:\/\u\s\r\/\l\o\c\a\l\/\s\b\i\n\:* ]] 
++ [[ -n '' ]] 
++ command_to_run=(__rvm_sudo -p "%p password required for '$*': " "${command_to_run[@]}") 
++ __rvm_sudo -p '%p password required for '\''apt-get --quiet --yes update'\'': ' apt-get --quiet --yes update 
++ command sudo -p '%p password required for '\''apt-get --quiet --yes update'\'': ' apt-get --quiet --yes update 
++ sudo -p '%p password required for '\''apt-get --quiet --yes update'\'': ' apt-get --quiet --yes update 
sudo: no tty present and no askpass program specified 
++ return 1 
++ typeset __ret=1 
++ case ${__ret} in 
++ return 1 
Requirements installation failed with status: 1. 
make: *** [install-ruby] Error 1 

事實證明,運行時RVM安裝作爲非root用戶,它會問你輸入密碼更新過程中的apt-get。

有沒有辦法在我的腳本中自動輸入密碼? Like

echo password | apt-get -S install xxxxxx 
+0

也許'apt-get -S安裝smh <「密碼」'? – ForceBru 2015-02-08 11:17:01

回答

0

一般不會:發送密碼到sudo不被認爲是安全的。錯誤消息指向推薦的解決方案:提供(配置)將提示您輸入密碼的程序。使用sudo,一旦您提供了有效的密碼,它將保持幾分鐘的效果(如果您在超時之前繼續使用憑​​據,則會延長)。

對於配置等,這個summary of askpass似乎有幫助。

這是另一個總結,舉例:Graphically ask for password in a bash script and retain default sudo timeout setting。有趣的是它的「askpass」程序是一個叫做kdialog的shell腳本。一個類似的例子可以使用「dialog」開發,甚至可以使用「read -p」讀取變量的bash腳本,或者甚至簡單地回顯密碼,如How to use sudo inside of a Run Script build phase in Xcode 4?

+0

你能告訴我如何指定一個askpass程序嗎? – HanXu 2015-02-08 12:29:02