gpt4 book ai didi

linux - cURL Bash 将响应主体保存到文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:47 24 4
gpt4 key购买 nike

我一直在 bash 中创建 curl,在这里我想通过调用函数 save_log() 将日志保存到一个文件中,但是当我打开 txt 文件时,它只是告诉我 execute仅在,而Header CodeResponse Body 为空白(空)

这是我的脚本:

SECRET_KEY='lolz'
FILE_NAME="test.txt"


function save_log()
{
printf '%s\n' \
"Header Code : $1" \
"Executed at : $(date)" \
"Response Body : $2" \
"====================================================================================================="$'\r\n\n' >> output.log
}

# while IFS= read -r line; do
while IFS= read -r line || [[ -n "$line" ]];
do
HTTP_RESPONSE=$(curl -L -w "HTTPSTATUS:%{http_code}" -H "X-Gitlab-Event: Push Hook" -H 'X-Gitlab-Token: '$SECRET_KEY --insecure $line 2>&1) &
HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPSTATUS\:.*//g') &
HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://') &
echo $HTTP_RESPONSE
save_log "$HTTP_STATUS" "$HTTP_BODY" &
done < $FILE_NAME

这是输出

    Header Code  : 
Executed at : Mon Jul 1 07:01:40 WIB 2019
Response Body :
=====================================================================================================

谁能帮帮我?

最佳答案

只需删除控制运算符 &这会强制您的命令在您自己的脚本控制流的后台和异步运行。

这将导致您的 save_log()不带参数调用的函数(因为它们在后台,当您调用 save_log() 时可能甚至没有完成)。

我测试过它有效(我不知道你的 FILE_NAME 上有哪些 URL,所以我只是添加了一些随机 URL):

SECRET_KEY='lolz'
FILE_NAME="test.txt"


function save_log()
{
printf '%s\n' \
"Header Code : $1" \
"Executed at : $(date)" \
"Response Body : $2" \
"====================================================================================================="$'\r\n\n' >> output.log
}

# while IFS= read -r line; do
while IFS= read -r line || [[ -n "$line" ]];
do
HTTP_RESPONSE=$(curl -L -w "HTTPSTATUS:%{http_code}" -H "X-Gitlab-Event: Push Hook" -H 'X-Gitlab-Token: '$SECRET_KEY --insecure $line 2>&1)
HTTP_BODY=$(echo $HTTP_RESPONSE | sed -e 's/HTTPSTATUS\:.*//g')
HTTP_STATUS=$(echo $HTTP_RESPONSE | tr -d '\n' | sed -e 's/.*HTTPSTATUS://')
echo $HTTP_RESPONSE
save_log "$HTTP_STATUS" "$HTTP_BODY"
done < $FILE_NAME

输出:

Header Code  : 200
Executed at : Sun Jun 30 18:05:12 UTC 2019
Response Body : <!DOCTYPE html> (...)

关于linux - cURL Bash 将响应主体保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56826779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com