Мне нужно объединить 2 переменные, но когда я выполняю код bash, я получаю эту ошибку filters.api.malformed_request_body
.
Мне нужно получить текущие IP-адреса, чтобы иметь возможность добавить новый IP-адрес в фильтрЭто потому, что мне нужно использовать две переменные, $a
- это текущий IP-адрес, указанный в правиле моего брандмауэра, а $b
- это новый IP-адрес, который я добавлю.
С Cloudflare
Чтобы сохранить существующие значения, выполните запрос GET и на основе ответа определите, какие поля (и соответствующие значения) следует включить в запрос PUT и, таким образом, избегайте любых нежелательных перезаписей.
Код:
a=122.16.89.10
b=137.77.77.77
curl -X PUT \
-H "X-Auth-Email: EMAIL" \
-H "X-Auth-Key: KEY" \
-H "Content-Type: application/json" \
-d '[
{
"id": "ID",
"paused": false,
"expression": "(ip.src in {'$a'" "'$b'})",
"description": "Block IP"
}
]' "https://api.cloudflare.com/client/v4/zones/ZONE/filters"
Я также пытался: "(ip.src in {'$a $b'})"
и:
new_filter="$a $b"
...
...
"(ip.src in {'$new_filter'})"
Если я echo $new_filter
, то он показывает правильный результат:
new_filter="$a $b"
echo $new_filter
#122.16.89.10 137.77.77.77
Когда я использую переменную $new_filter
, она также показывает эту ошибку curl: (3) [globbing] unmatched close brace/bracket in column 13
строка 13: -H "Content-Type: application/json" \
.
Ничего не сработало, почему?Я получаю эту ошибку:
{
"result": null,
"success": false,
"errors": [
{
"code": 10014,
"message": "filters.api.malformed_request_body"
}
],
"messages": []
}
Это работает: "(ip.src in {'$a'})"
.