相关文章推荐
强健的馒头  ·  学透 讲透 ...·  2 年前    · 
长情的风衣  ·  Intellij IDEA ...·  2 年前    · 
不拘小节的牛排  ·  bootstrap 5 ...·  2 年前    · 

ARM.Template来自bash-script。未结束的字符串。预期的定界符。

0 人关注

我正在编写一个bash脚本,用于从linux服务器向azure keyvault上传证书,使用 "armclient"。

我按照这个指南来使用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'}}"

When i run armclient put $putparm in the script i get this error:

"错误"。{ "代码":"InvalidRequestContent"。 "消息":"请求内容无效,不能被反序列化:'未结束的字符串。预期的分隔符。\".路径''。 第1行,第21位。'。" }

但是,当我从$putparm变量的输出中,在服务器上 "手动 "运行该命令时,它是有效的。

我想这与linux存储变量的方式有关,而且API请求的是JSON(或其他什么)。

很高兴得到任何帮助。

json
linux
bash
shell
TimmyV
TimmyV
发布于 2018-05-30
1 个回答
oliv
oliv
发布于 2018-05-30
已采纳
0 人赞同

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

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

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

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