@ironheaddd

Как передать переменную в curl?

Здравствуйте
написал скрипт на bash
#!/bin/bash
expressvpn list all > country.txt
while read locked; do
	echo $locked
	sed -i "/${locked}/d" country.txt 
done < locked.txt
tail -n+6 country.txt | sed -r 's/ .+//' > country_final.txt

while read line; do
	expressvpn connect sgju #$line
	stat=$(expressvpn status | grep 'Connected to')
	send="Warning! $stat is not work!"
	if curl https://domain.com| tac| tac | grep -q "any_text"; then
		printf "work $stat"
	else
		printf "don't work $stat"
		curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"${send}\"}" https://hooks.slack.com/services/???????????/???????????/????????????????????????
		send="Warning! $stat is not work!"
	fi
	echo -en '\n'
	echo -en '\n'
	expressvpn disconnect
	sleep 5
done < country_final.txt

но при выполнении curl возникает ошибка invalid_payload, если же переменную $stat записать как $stat="random text", то все работает отлично, ошибок не возникает, алерты в слак приходят.
В чем может быть загвоздка?
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
send=$(echo "$send" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g')
curl -X POST -H 'Content-type: application/json' --data "$(jq -n --arg text "$send" '{text: $text}')" https://hooks.slack.com/services/???????????/???????????/????????????????????????

первая строка - переприсваиваем send для обрезания невидимых символов цветовых кодов
во второй строке с помощью jq формируем валидный json для отправки данный в ключе --data
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы