[英]Extracting http status code from “find -exec curl”
我正在尝试在“ find -exec”的上下文中从“ curl”中提取http状态代码。 我需要此工具来测试是否失败,以便随后发布报告并阻止脚本再次运行。 我目前可以提取代码并使用-write-out打印到stdout,但我需要将其存储在脚本中以备后用。
目前有类似的东西:
find . -cmin -140 -type f -iname '*.gz' -exec curl -T {} --write-out "%{http_code}\n" www.example.com/{} \;
样本输出:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 7778 0 0 101 7778 0 17000 --:--:-- --:--:-- --:--:-- 17000
000
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 7795 0 0 101 7795 0 17433 --:--:-- --:--:-- --:--:-- 17433
000
'000'是打印到控制台的http状态代码。 我希望在手动测试此脚本时将curl输出保留在控制台窗口中,但是我确实需要提取状态代码以供以后在脚本中使用。
find
的-exec
参数在子进程中运行,然后退出。 没有简单的方法走私状态来控制find
。 更好的方法是使用循环。
find . -cmin -140 -type f -iname '*.gz' -print0 |
while read -d $'\0' -r file; do
status=$(curl -T "$file" --write-out "%{http_code}\n" www.example.com/"$file")
case $status in
200) ;;
*) echo "$0: $file fail $status" >&2; break;;
esac
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.