- Необходимо проходить по списку URL'ов и проверять их доступность. Условия:
- Список URL'ов находится в файле /urls.txt;
- Доступный URL - значит код ответа не 5XX или 4XX;
- Проверка должна быть оформлена в виде функции bash, которая должна вызываться внутри скрипта;
- Функция должна принимать в качестве входного параметра путь к файлу с URL'ами;
- При любом ответе недоступности от сервиса - прерывать дальнейшую проверку. Временное ограничение 20 мин.
Ответ
Скрипт проверки. Запускать ./script.sh <путь до файла с URLs>
#!/usr/bin/env bash
set -xueo pipefail
FILE_URLS=${1:-}
if [[ -z "${FILE_URLS}" ]]; then
echo "File with URLs list do not defined."
exit 1
fi
function checkUrls() {
local URLS=$1
for URL in $(cat $URLS); do
STATUS=`curl -LI "${URL}" -o /dev/null -w '%{http_code}' -s`
if [[ "${STATUS}" == "500" ]] || [[ "${STATUS}" == "400" ]]; then
echo "URL ${URL} unavailable!"
exit 1
else
echo "URL ${URL} available."
fi
done
}
checkUrls "${FILE_URLS}"
- Есть две изолированные сети /25 - 192.168.1.0 (gw: 192.168.1.1), 192.168.1.128 (gw: 192.168.1.129). Есть два сервера со следующими таблицами маршрутизации
192.168.1.3
routes
0.0.0.0/0 192.168.1.1
192.168.1.146
routes
192.168.1.128/24 192.168.1.129
Что нужно сделать, чтобы эти сервера "видели" друг друга?
- В конфиге nginx некоторого проекта есть два десятка различных location, которые делятся на три базовых типа - memcache, dynamic, static. Лог проекта единый, но для анализа требуется различать записи в логе каким-либо способом. По именам файлов тип location различить нельзя, разделить на три лога также нельзя. Предложите решение.
Ответ
Использовать вывод в syslog и определить tag. Например:location /memcache {
access_log syslog:server=unix:/dev/log,tag=nginx_memcache;
error_log syslog:server=unix:/dev/log,tag=nginx_memcache;
}
location /dynamic {
access_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
error_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
}
/static - соответственно. Вывод в определенный файл syslog можно указать опцией :syslogtag