【问题标题】:How to capture JSON result from Azure CLI within NodeJS script如何在 NodeJS 脚本中从 Azure CLI 捕获 JSON 结果
【发布时间】:2012-11-23 21:59:40
【问题描述】:

有没有办法从 NodeJS 脚本中捕获来自 Azure NodeJS CLI 的 JSON 对象?我可以执行类似 exec('azure vm list') 之类的操作并编写一个承诺来处理延迟的标准输出结果,或者我可以劫持 process.stream.write 方法,但是查看 CLI 代码,我想这相当广泛可能有一种方法可以将回调传递给 cli 函数或其他可能直接返回 JSON 结果的选项。我看到您正在使用 winston 记录器模块——我可能对此很熟悉,但也许那里有一个可以使用的钩子。

【问题讨论】:

    标签: json node.js azure command-line-interface capture


    【解决方案1】:

    azure vm 列表确实有一个 --json 选项:

     C:\>azure vm list -h
     help:    List Azure VMs
     help:
     help:    Usage: vm list [options]
     help:
     help:    Options:
     help:      -h, --help               output usage information
     help:      -s, --subscription <id>  use the subscription id
     help:      -d, --dns-name <name>    only show VMs for this DNS name
     help:      -v, --verbose            use verbose output
     help:      --json                   use json output
    

    您可以在 exec(...) 调用的回调中获取 json 结果。这对你有用吗?

    【讨论】:

    • 玛姬谢谢你的回复。我知道我“可以在 exec(...) 调用的回调中获得 json 结果”。我只是认为可能有一种更方便的方法,它使用 cli 模块本身的参数来节省使回调结果可用于修改和重新提交的麻烦。 cli中使用了很多模块,例如一个可能也在捕获命令结果的“winston logger”,我怀疑开发人员知道有一个钩子。但是,无论如何,谢谢。罗宾
    【解决方案2】:

    是的,您可以,请查看以下要点:https://gist.github.com/4415326,您将了解不执行 exec 的情况。您基本上覆盖了挂在 CLI 上的记录器。

    附带说明一下,我即将发布一个新模块 azure-cli-buddy,它可以让使用此技术轻松调用 CLI 并接收 JSON 格式的结果。

    【讨论】:

    • Glenn 你最终发布了这个模块吗?这是npmjs.com/package/azure-scripty 吗?
    • 是的,就是这样。虽然 CLI 也支持 --json 脚本围绕它构建。
    猜你喜欢
    • 1970-01-01
    • 2015-06-02
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多