我有一个这样的bash脚本
#!/bin/bash
while read fqdn hostname; do
curl -H "Content-Type:application/json" -XPUT "https://server/api/hosts/${fqdn}" -d '{"host":{"name": "'${hostname}'"}}' --cacert bundle.pem --cert pnet-pem.cer --key privkey.pem
done <curl1.txt文件curl1.txt包含以下内容
fqdn (Tab)主机名
.
我必须使用theForeman应用程序接口更新一些数据。我有很多fqdns和主机名,所以我写了上面的脚本。问题出在JSON上,因为我得到了如下错误:
{"status":400,"error":"There was a problem in the JSON you submitted: 795: unexpected token at '{\"host\":{\"name\": \"ptesrv02-lub\r\"}}'"}当我用'{"host":{"name": "${hostname}"}}'代替'{"host":{"name": "'${hostname}'"}}'时,我得到
{
"error": {"id":130,"errors":{"interfaces.name":["is invalid"],"name":["is invalid"]},"full_messages":["Name is invalid","Name is invalid"]}
}那么问题出在哪里呢?你能帮我吗?
发布于 2016-07-20 17:20:15
要从从Windows复制的文件中删除不重要的特殊字符(CR-LF结尾),可以使用'tr‘命令
hostname=$(echo $hostname|tr -d '\r')在上面的例子中。这些特殊字符的存在会破坏bash处理字符的方式。
归功于指出hostname变量中存在特殊字符的threadp。
如果您曾经怀疑文件有这样的CR-LF结尾,您可以通过使用grep搜索它们来确认,并将文件视为二进制文件
grep -U $'\015' curl1.txthttps://stackoverflow.com/questions/38475774
复制相似问题