Скрипт n curl POST из n строк текстового файла и условное сохранение вывода для ответа HTTP-запроса «200 OK»

Поскольку эта команда trвсегда записывает столько же данных, сколько и читает, для нее должно быть безопасно записывать свои выходные данные на место:

С оболочкой ksh93:

tr -sc '\n[:alnum:][:punct:]' '[ *]' < file 1<>; file

(здесь преобразовано в стандартный/POSIX-синтаксис [ *]и добавлена ​​новая строка в список сохраняемых символов, чтобы избежать создания не -текстового вывода ).

Специфический оператор 1<>;ksh93 -аналогичен стандартному 1<>чтению+записи -без -усечения, за исключением того, что после успешного завершения перенаправляемой команды файл усекается в текущем позиция.

-1
28.09.2021, 19:03
1 ответ

В приведенном ниже сценарии оболочкиЯ отвечаю на ваши 3 требования:

  • считывает последовательные значения PARAMETERиз файла numbers.txt, где они перечислены по одному значению в строке.
  • для каждого полученного значения PARAMETERпроверьте, запрашивает ли ваш HTTP-сервер код возврата "200"
  • добавлять последовательные выходные данные cURL к output.txtпри условии, что код возврата HTTP «200 OK»

Я не изменил ваш синтаксис в отношении кавычек и экранированных кавычек. Это может быть случай использования -или иным образом специфичный для вашей среды, и я не могу его протестировать. Поместите следующий сценарий оболочки в файл myscript.shи сделайте файл исполняемым с помощью терминальная команда:chmod ug+x myscript.sh:

$ cat myscript.sh

[выход]

#!/usr/bin/sh    
output="$(/usr/bin/date +%Y%m%d_%H%M%S)""_output.txt"
while read -r dyn_param; do
    set -- -isk \
    -X 'POST' \
    -H 'Host: api.host.it' \
    -H 'Content-Length: 205' \
    -H 'Sec-Ch-Ua: \"Chromium\";v=\"93\", \" Not;A Brand\";v=\"99\"' \
    -H 'Messageid: 9d6dd58d2df24d0aa410245a' \
    -H 'Sessionid: ada9e560ed204e85a25e5475' \
    -H 'Devicetype: ANDROID' \
    -H 'Interactiondate-Date: 2021-09-27' \
    -H 'Interactiondate-Time: 20:32:37.758' \
    -H 'Sec-Ch-Ua-Mobile: ?0' \
    -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36' \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Accept: application/json' \
    -H 'Sourcesystem: WEB' \
    -H 'Businessid: bbc0a98dc23a4a84968c42e4' \
    -H 'Channel: HOSTWEBCO' \
    -H 'Transactionid: 3F941666A8414D3C874AC77B' \
    -H 'Sec-Ch-Ua-Platform: \"Linux\"' \
    -H 'Origin: https://www.host.com' \
    -H 'Sec-Fetch-Site: same-site' \
    -H 'Sec-Fetch-Mode: cors' \
    -H 'Sec-Fetch-Dest: empty' \
    -H 'Referer: https://www.host.com/' \
    -H 'Accept-Encoding: gzip, deflate' \
    -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8' \
    -H 'Connection: close'
    
    set -- "$@" \
--data-binary '{"mount":25,"Method":"SA","redirectUrlKo":"https://www.host.com/ricarica?esito=KO","redirectUrlOk":"https://www.host.com/ricarica?esito=OK","toMsisdn":'\""$dyn_param"\"',"txReqDescription":"scarica Online"}'

 httpcode=$(curl -o curl_tmp_dump -w "%{http_code}" "$@" https://api.host.com/api/recharge/public/init 2>/dev/null)
 [ "$httpcode" -eq 200 ] && \cat curl_tmp_dump >> "$output"
\rm -f curl_tmp_dump

done < numbers.txt

exit 0
0
29.09.2021, 09:54

Теги

Похожие вопросы