0

如何在不先登录的情况下运行 heroku 命令?

我已经尝试将 .netrc 文件放入 ~ 中,但没有奏效。是否有一些环境变量或命令行可以让我开始运行 Heroku 的东西而无需手动干预?

我们有几个一次性的 heroku 工作人员,我们正在尝试使用 nagios 来查看他们是否启动并接受命令。

如果我在这台机器上以正确的用户身份手动登录 heroku 后运行这个脚本,它就可以工作。如果我没有,那就没有。并且由于我们试图实现完全自动化的实例设置和配置的完美世界,heroku 正在成为一个问题。

据我所知(请记住,我不是 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 是否启动。有没有更好(免费,简单)的解决方案?

4

1 回答 1

0

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

expect -c 'spawn ssh me@host; expect assword; send "password\n"; interact'

启动ssh并等待它assword在控制台中打印,此时它将向它发送字符串passwordheroku因此,当您要求提供凭据时,您只需要了解打印的内容。

于 2013-07-03T23:28:47.710 回答