Это простой скрипт для проверки статусов страниц:
#!/bin/bash
SCRIPT_NAME=`basename "$0"`
usage()
{
cat <<EOF
Get http status code for list of urls.
Usage: $SCRIPT_NAME [option] [INPUT]
Options:
-h, --help: prints help and exit
-w, --workers: number of workers (default: cpu cores x2)
EOF
}
WORKERS=$((`nproc --all` * 2))
ARGS=()
while (($#)); do
case "$1" in
-h|--help)
usage
exit 0;;
-w|--workers)
shift
if [[ -z $1 ]]; then
echo "number of workers is not specified" >&2
exit 1
fi
WORKERS="$1";;
*)
ARGS+=("$1");;
esac
shift
done
# restore arguments. Я правильно вообще это делаю?
set -- "${ARGS[@]}"
if [[ -n $1 ]]; then
URLS=`cat "$1"`
else
URLS=`cat`
fi
# из-за проблем с шаблонами вызов curl пришлось обернуть функцией
_check_http_status_code()
{
local url="$1"
curl \
-A "Mozilla/5.0 (X11; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0" \
--retry 0 \
-L \
-m 3 \
-o /dev/null \
-s \
-w '%{url_effective} %{response_code}\n' "$url"
}
export -f _check_http_status_code
# man parallel_tutorial
parallel -j "$WORKERS" _check_http_status_code '{}' <<< "$URLS"
Я давно не писал на баше «сурьезные» скрипты и чет по мне он слишком уродлив