gpt4 book ai didi

json - 来自 bash 脚本的 ARM.Template。未终止的字符串。预期的分隔符 :

转载 作者:太空宇宙 更新时间:2023-11-04 10:08:30 25 4
gpt4 key购买 nike

我正在编写一个 bash 脚本,用于使用“armclient”将证书从 linux 服务器上传到 azure keyvault

我遵循这个关于如何使用 armclient 的指南: https://blogs.msdn.microsoft.com/appserviceteam/2016/05/24/deploying-azure-web-app-certificate-through-key-vault/

我要执行的命令是这样的:

ARMClient.exe PUT /subscriptions/<Subscription Id>/resourceGroups/<Server Farm Resource Group>/providers/Microsoft.Web/certificates/<User Friendly Resource Name>?api-version=2016-03-01 "{'Location':'<Web App Location>','Properties':{'KeyVaultId':'<Key Vault Resource Id>', 'KeyVaultSecretName':'<Secret Name>', 'serverFarmId':'<Server Farm (App Service Plan) resource Id>'}}"

我创建了一个字符串来填充所有必需的字段:

putparm=$resolved_armapi" \"{'Location':'$resolved_locationid','Properties':{'KeyVaultId':'$resolved_keyvaultid','KeyVaultSecretName':'$certname','serverFarmId':'$resolved_farmid'}}"\"

当我回显变量 putparm 的输出时,结果看起来符合预期(X-ed 出名称/ID):

/subscriptions/f073334f-240f-4261-9db5-XXXXXXXXXXXXX/resourceGroups/XXXXXXXX/providers/Microsoft.Web/certificates/XXXX-XXXXX-XXXXX?api-version=2016-03-01 "{'Location':'Central US','Properties':{'KeyVaultId':'/subscriptions/f073334f-240f-4261-9db5-XXXXXXXXXXXXX/resourceGroups/XXXXXXXX/providers/Microsoft.KeyVault/vaults/XXXXXXXX','KeyVaultSecretName':'XXXX-XXXXX-XXXXX','serverFarmId':'/subscriptions/f073334f-240f-4261-9db5-XXXXXXXXXXXXX/resourceGroups/XXXXXXXX/providers/Microsoft.Web/serverfarms/ServicePlan59154b1c-XXXX'}}"

当我在脚本中运行 armclient put $putparm 时出现此错误:

"error": { "code": "InvalidRequestContent", "message": "The request content was invalid and could not be deserialized: 'Unterminated string. Expected delimiter: \". Path '', line 1, position 21.'." }

但是当我获取 $putparm 变量的输出并在服务器上“手动”运行命令时,它起作用了。

我猜这与 linux 存储变量的方式有关,而且 API 正在请求 JSON(或其他......)

很高兴得到任何帮助。

最佳答案

您定义变量 putparam 的方式是错误的。

它可能被解释为文字字符串而不是对象。请注意,一个简单的字符串,如 "hello",是一个有效的 JSON 数据,但它可能不是您的服务器所期望的。

如果你应该正确引用你的变量:

putparm="{\"Location\":\"$resolved_locationid\",\"Properties\":{\"KeyVaultId\":\"$resolved_keyvaultid\",\"KeyVaultSecretName\":\"$certname\",\"serverFarmId\":\"$resolved_farmid\"}}"

并像这样使用它:

armclient put "$resolved_armapi" "$putparm"

关于json - 来自 bash 脚本的 ARM.Template。未终止的字符串。预期的分隔符 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605065/

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