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

问题描述 投票:0回答:1

我正在编写一个bash脚本,用于使用“armclient”将证书从linux-server上传到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 out names / ids):

/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”:“请求内容无效且无法反序列化:'未终止的字符串。预期的分隔符:\”。路径'',第1行,第21位。'。}}

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

我想它与linux存储变量的方式有关,并且API正在请求JSON(或其他东西......)

很高兴任何帮助。

json linux bash shell
1个回答
1
投票

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

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

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

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

并像这样使用它:

armclient put "$resolved_armapi" "$putparm"
© www.soinside.com 2019 - 2024. All rights reserved.