LINUX.ORG.RU

Помогите со скриптом

 , ,


2

3

Доброго времени суток, осваиваю Zabbix API. Есть скрипт на bash:

curl -i -k -X POST -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.exists",
    "params": {
        "host": "Zabbix Server"
    },
    "auth": "$qwerty",
    "id": 1
} ' http://192.168.0.1/api_jsonrpc.php

Как сделать так, чтобы передавались данные из переменной $qwerty? Понимаю что туплю, но не могу понять где. Пробовал менять кавычки и экранировать - бесполезно.

Спасибо.

★★

Последнее исправление: nixit (всего исправлений: 1)

Параметр аргумента -d заключен в одинарные кавычки => в этой строке, вне зависимости от дополнительных кавычек, не будет вытаскиваться значение qwerty. Наверн решение может быть таким: заменить одинарные на двойные, а внутри отэкранировать те двойные, которые относятся к json'у. Впрочем, сам не проверял.

lu4nik ★★★
()
Ответ на: комментарий от lu4nik
curl -i -k -X POST -H 'Content-Type: application/json-rpc' "
{
    \"jsonrpс\": \"2.0\",
    \"method\": \"host.exists\",
    \"params\": {
        \"host\": \"Zabbix Server\"
    },
    \"auth\": \"$qwerty\",
    \"id\": 1
} " http://192.168.0.1/api_jsonrpc.php

Не работает так

nixit ★★
() автор топика
Последнее исправление: nixit (всего исправлений: 4)
Ответ на: комментарий от lu4nik

Опечатался, там с "-d". С двойными кавычками не работает, даже если подставить хэш руками, только с одинарными...

nixit ★★
() автор топика
Последнее исправление: nixit (всего исправлений: 1)
Ответ на: комментарий от nixit

Хотя, судя по выводу echo всё должно работать...

nixit ★★
() автор топика
Ответ на: комментарий от nixit

Вот это поворот. Я смоделировал ситуацию, используя простой скрипт на питоне с argparse, т.к. ситуация явно относится к башу, а не курлу. Также сделал тестовый скрипт с скопированной твоей строкой с двойными кавычками. Как ни странно, вроде работает так, как надо.

Вот тестовый код: script.sh argtest.py

Единственное, что кажется подозрительным - буква «c» в «jsonrpc», кажется, она кириллическая, а не латинская.

lu4nik ★★★
()
Ответ на: комментарий от lu4nik

Да, проблема была именно в этом... Спасибо большое.

nixit ★★
() автор топика
Ответ на: комментарий от nixit

Еще так можно

curl -i -k -X POST -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "host.exists",
    "params": {
        "host": "Zabbix Server"
    },
    "auth": '"$qwerty"',
    "id": 1
} ' http://192.168.0.1/api_jsonrpc.php

salsa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.