如何从脚本运行heroku命令而无需手动输入凭据

时间:2013-07-03 23:23:54

标签: heroku heroku-toolbelt

如何在不先登录的情况下运行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是否已经成为白痴。对此有更好的(免费,简单)解决方案吗?

1 个答案:

答案 0 :(得分:0)

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

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

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