2013-07-03 21 views
0

如何在不首先登錄的情況下運行heroku命令?如何在沒有手動輸入憑據的情況下從腳本運行heroku命令

我已經試過把〜.netrc文件放進〜,但是沒有奏效。有沒有一些環境變量或命令行的東西,我可以讓我開始運行我的heroku的東西,而無需手動干預?

我們有幾個一次性的heroku工作人員,我們試圖使用nagios來查看他們是否啓動並接受命令。

如果我在此機器上以正確的用戶身份登錄到heroku後手動運行此腳本,它將起作用。如果我沒有,它不會。而且,由於我們試圖拉完全自動實例設置和配置的完美世界,heroku正在成爲一個問題。

據我所知(請記住,我不是英雄傢伙,我們的英雄傢伙並不是非常確定自己),設置netrc文件應該可以工作,但它只是一直被heroku消滅。我相信他們對此有支持。

腳本是:

# Check for two or more workers up for each of our heroku apps. 

HEROKU_APPS=$(heroku apps | grep -v '^=') 

exit_status=0 

for app in $HEROKU_APPS; do 
    workers_up=$(heroku ps --app=$app | grep -c 'web\.[12]: up') 
    if [ 1 -eq $workers_up ]; then 
     exit_status=1 
    elif [ 0 -eq $workers_up ]; then 
     exit_status=2 
     exit $exit_status 
    fi 
done 

exit $exit_status 

/另外,我承認,這是可能的,我們正在試圖通過黑客進入Nagios的檢查,如果是的Heroku是高達白癡。有沒有更好的(免費,簡單)解決方案?

+0

您是否將該腳本作爲您通常用於Heroku命令的相同用戶帳戶運行?我使用下面的簡單腳本,它只是工作。 #!/ bin/sh heroku create $ * – jr0cket

+0

您可以提供您正在嘗試運行的腳本嗎?也許作爲Github Gist? – jr0cket

回答

0

你可以使用expect適合您的需求,例如以下:

expect -c 'spawn ssh [email protected]; expect assword; send "password\n"; interact' 

推出ssh,並等待其在控制檯打印assword,此時它會將字符串password發送給它。所以你只需要瞭解當heroku要求你提供憑證時打印什麼。

相關問題