IFTTT & Raspberry pi: присвоение значения от терминала веб-запросу IFTTT - PullRequest
0 голосов
/ 29 августа 2018

Я сделал апплет Webhook в IFTTT, который отправлял бы мне письмо, когда срабатывает «печать»

В теле URL-адреса JSON я могу указать такие значения

curl -X POST -H "Content-Type: application/json" -d '{"value1":"9"}' https://maker.ifttt.com/trigger/print/with/key/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Что я хочу сделать, так это найти мой публичный IP-адрес и передать его как значение 1.

Я нашел свой IP

value1=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo $value1

Как передать значение1 на указанный выше URL

Я пытался

'{"value1":"$value1"}' 
'{"value1":{{$value1}}}' 
'{"value1":{{value1}}}'

P.S .: У меня нет базовых знаний в сценарии оболочки. Это первый раз, когда я делаю это

1 Ответ

0 голосов
/ 29 августа 2018

Выражения внутри одинарных кавычек не раскрываются в оболочке, они воспринимаются как буквальные. Это означает, что если вы храните свой IP-адрес в переменной с именем ip, например:

ip=$(dig +short myip.opendns.com @resolver1.opendns.com)

и вы поместите это в одинарные кавычки, оно не будет расширено:

echo '$ip'
$ip

тогда как, если вы поместите его в двойные кавычки, оно будет расширено:

echo "$ip"
192.80.136.233

Итак, вам нужны двойные кавычки, но это вызовет проблему, потому что вам нужны двойные кавычки вокруг строк JSON, поэтому вам нужно избегать их, ставя перед ними обратную косую черту. Итак, вы хотите:

curl -X POST -H "Content-Type: application/json" -d "{\"value1\":\"$ip\"}"
...