gpt4 book ai didi

heroku 证书 :info --app appname does not write to STDOUT or STDERR

转载 作者:行者123 更新时间:2023-12-04 02:43:35 24 4
gpt4 key购买 nike

我正在尝试处理 heroku certs 命令的输出。 heroku toolbelt 中的其他命令写入 STDOUT,但 heroku certs 和相关命令如 heroku certs:info 似乎没有写在我期望在 ubuntu 上的任何地方。正常运行时的输出:

$ heroku certs:info --app appname
Fetching SSL Endpoint changedname-3302.herokussl.com info for appname... done
Certificate details:
Common Name(s): *.domain.com
domain.com

...etc

尝试重定向或管道输出的输出:

$ heroku certs --app appname | grep ssl
$ heroku certs --app appname | cat
$ heroku certs:info --app appname | grep ssl
$ heroku certs:info --app appname 2>&1 | grep ssl
$ heroku certs:info --app appname &> /tmp/certs.info; cat /tmp/certs.info
$ heroku certs:info --app appname > /tmp/certs.info; cat /tmp/certs.info

其他 heroku 命令按预期工作:

$ heroku ps --app appname | grep web
=== web (1X): `node www`
web.1: idle 2013/10/12 05:44:15 (~ 10h ago)

$ heroku status --app appname | grep -i status
=== Heroku Status

这是一个应该报告的错误还是我遗漏了什么?

最佳答案

我同样在 try catch heroku certs 的输出,以便我们可以自动化 DNS 设置。

正如您还发现的那样,Heroku toolbelt 脚本不会重定向任何 certs 命令的输出。深入研究 ruby​​ 实现,就是在重写“display”方法中:

def display(msg = "", new_line = true)
super if $stdout.tty?
end

( https://github.com/heroku/heroku/blob/master/lib/heroku/command/certs.rb#L188 )

如果它不认为它输出到/dev/tty,它根本不会打印任何东西。

作为一个快速的 hack,我使用了一个 curl 等效的替代品:

curl -n -s -X GET https://api.heroku.com/apps/my_app_name/ssl-endpoints -H "Accept: application/vnd.heroku+json; version=3"

-n 选项将使 curl 使用 heroku 脚本已经使用的 ~/.netrc 条目。输出为 JSON,按照这些行。

[
{
"cname":"xxxx-xxxx.herokussl.com",
"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name":"xxxx-xxxx",
"warnings":[],
"ssl_cert":{
"ca_signed?":true,
"cert_domains":[
"*.xxxxxxxx.com",
"xxxxxxxx.com"
],
"expires_at":"xxxx",
"issuer":"xxxx",
"self_signed?":false,
"starts_at":"xxxx",
"subject":"xxxx"
},
"ssl_cert_prev":null
}
]

根据您包装脚本的方式,这可能比 heroku 输出更易于解析。

关于heroku 证书 :info --app appname does not write to STDOUT or STDERR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19336440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com