Я пытаюсь записать сценарий оболочки для проверки на существование конкретного каталога в конкретном доменном имени. Например, мне назвали веб-сайт www.example.com
. Я хочу проверить ли страница www.example.com/testpage
существует или нет. У меня есть текстовый файл, содержащий список имен каталогов, один на строку, который должен быть заменен именем testpage
. Я хочу, чтобы сценарий выбрал каждые из этих имен каталогов, добавил его к URL www.example.com
и проверьте его. Как я могу начать писать свой сценарий?
Давайте исследуем пример.
Файл relative_urls.list
:
> cat relative_urls.list
/users/449/oli
/users/449
/help/badges
/help/badges/185/curious
/unanswered
/questions/tagged/12.04
/questions/tagged/boot
/questions/tagged/oracle
/questions/tagged/internet_explorer
/questions/tagged/outlook
Мы хотели бы проверить если эти документы, доступные на сайте http://askubuntu.com .
Возможное решение:
> cat relative_urls.list |while read i ; do curl --head -s "http://askubuntu.com"$i |grep -q '^HTTP.*200' && echo "OK '$i'" ||echo "fail '$i'" ; done
И результат:
OK '/users/449/oli'
fail '/users/449'
OK '/help/badges'
OK '/help/badges/185/curious'
OK '/unanswered'
OK '/questions/tagged/12.04'
OK '/questions/tagged/boot'
OK '/questions/tagged/oracle'
fail '/questions/tagged/internet_explorer'
fail '/questions/tagged/outlook'
, Если Вы предпочитаете другое определение доступности URL, можно измениться grep
команда на что-то более соответствующее для условий.
Важная вещь состоит в том, что curl
шоу, является ли URL , служили веб-сервером. Нет никакого надежного метода для определения существование каталога в файловой системе веб-сервера через http.