Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание

Тут можно читать онлайн Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Питер, год 2017. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2017
  • Город:
    СПб.
  • ISBN:
    978-5-496-03029-8
  • Рейтинг:
    5/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание краткое содержание

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - описание и краткое содержание, автор Дейв Тейлор, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Сценарии командной оболочки помогают системным администраторам и программистам автоматизировать рутинные задачи с тех самых пор, как появились первые компьютеры. С момента выхода первого издания этой книги в 2004 году многое изменилось, однако командная оболочка bash только упрочила свои лидирующие позиции. Поэтому умение использовать все ее возможности становится насущной необходимостью для системных администраторов, инженеров и энтузиастов. В этой книге описываются типичные проблемы, с которыми можно столкнуться, например, при сборке программного обеспечения или координации действий других программ. А решения даются так, что их легко можно взять за основу и экстраполировать на другие схожие задачи.
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать онлайн бесплатно полную версию (весь текст целиком)

Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Листинг 9.3.Проверка недействительных ссылок с помощью checklinks на более крупном веб-сайте

$ checklinks http://www.intuitive.com/library/

5 errors encountered. Checked 62 pages at http://intuitive.com/library/:

·· index/·· in BeingEarnest.shtml

·· Archive/f8·· in Archive/ArtofWriting.html

·· Archive/f11··in Archive/ArtofWriting.html

·· Archive/f16··in Archive/ArtofWriting.html

·· Archive/f18··in Archive/ArtofWriting.html

A copy of this output has been saved in intuitive.com.errors

Как показывают результаты, файл BeingEarnest.shtml содержит недействительную ссылку на /index/ , потому что нет такого файла /index/ . Также в файле ArtofWriting.html найдено четыре недействительные ссылки, имеющие странный вид.

Наконец, в листинге 9.4 показаны результаты проверки блога Дейва с обзорами фильмов, которая выявила в нем скрытые ошибки.

Листинг 9.4.Запуск сценария checklinks под управлением утилиты time, чтобы узнать продолжительность его работы

$ time checklinks http://www.daveonfilm.com/

No errors encountered. Checked 982 pages at http://www.daveonfilm.com/

real 50m15.069s

user 0m42.324s

sys 0m6.801s

Обратите внимание: добавив команду time перед другой командой, выполняющейся длительное время, можно узнать, как долго она выполнялась. В данном случае видно, что проверка всех 982 страниц в блоге http://www.daveonfilm.com/потребовала 50 минут реального времени, из которых фактическая обработка заняла 42 секунды. Это очень много!

Усовершенствование сценария

Файл с данными traverse.dat содержит список всех встреченных URL, а файл reject.dat — список всех встреченных, но непроверенных URL, обычно потому, что они являются внешними ссылками. Их проверкой мы займемся в следующем сценарии. Фактически найденные ошибки фиксируются в файле traverse.errors , как можно догадаться по строке картинка 409в листинге 9.1.

Чтобы заставить этот сценарий сообщать о недействительных ссылках на изображения, добавьте команду grep для поиска в файле traverse.errors расширений имен файлов .gif, jpeg или .png перед передачей результатов команде sed (которая здесь просто убирает из вывода все лишнее, чтобы сделать его более удобочитаемым).

№ 70. Выявление недействительных внешних ссылок

Этот сценарий (листинг 9.5) является сопутствующим для сценария № 69 и основывается на результатах, произведенных им, выявляя все внешние ссылки на сайте или в его подкаталогах, обращение к которым приводит к ошибке «404 Not Found». Для простоты предполагается, что непосредственно перед данным сценарием выполнялся предыдущий сценарий и в текущем каталоге хранится файл *.rejects со списком URL.

Код

Листинг 9.5.Сценарий checkexternal

#!/bin/bash

# checkexternal — проверяет все ссылки на веб-сайте и конструирует список

#·· внешних ссылок, затем проверяет каждую, чтобы выявить среди них

#·· недействительные. Флаг −a заставляет сценарий вывести все ссылки,

#·· независимо от их доступности или недоступности; по умолчанию выводятся

#·· только недоступные ссылки.

listall=0; errors=0; checked=0

if ["$1" = "-a"]; then

··listall=1; shift

fi

if [-z "$1"]; then

··echo "Usage: $(basename $0) [-a] URL" >&2

··exit 1

fi

trap "$(which rm) −f traverse*.errors reject*.dat traverse*.dat" 0

outfile="$(echo "$1" | cut −d/ −f3). errors.ext"

URLlist="$(echo $1 | cut −d/ −f3 | sed 's/www\.//'). rejects"

rm −f $outfile # Подготовиться к выводу новой информации.

if [! -e "$URLlist"]; then

··echo "File $URLlist not found. Please run checklinks first." >&2

··exit 1

fi

if [! -s "$URLlist"]; then

··echo "There don't appear to be any external links ($URLlist is empty)." >&2

··exit 1

fi

#### Теперь все готово к анализу…

for URL in $(cat $URLlist | sort | uniq)

do

картинка 410··curl −s "$URL" > /dev/null 2>&1; return=$?

··if [$return −eq 0]; then

····if [$listall −eq 1]; then

······echo "$URL is fine."

····fi

··else

····echo "$URL fails with error code $return"

····errors=$(($errors + 1))

··fi

··checked=$(($checked + 1))

done

echo ""

echo "Done. Checked $checked URLs and found $errors errors."

exit 0

Как это работает

Это не самый элегантный сценарий в книге. Он реализует метод простого перебора для проверки внешних ссылок. В блоке кода в картинка 411для каждой найденной внешней ссылки вызывается команда curl, которая проверяет ее доступность, пытаясь получить содержимое по адресу URL ссылки и сразу отбрасывая его по получении.

Конструкция 2>&1 заслуживает отдельного упоминания: она перенаправляет выходное устройство с дескриптором 2 в выходное устройство с дескриптором 1. В командной строке выходное устройство с дескриптором 2 соответствует stderr (стандартному потоку вывода сообщений об ошибках), а выходное устройство с дескриптором 1 соответствует stdout (стандартному потоку вывода). Все, что выводится в stderr, конструкция 2>&1 перенаправляет в stdout. Но обратите внимание, что сначала поток stdout перенаправляется в /dev/null. Это виртуальное устройство, куда можно записать бесконечный объем данных, — своеобразная черная дыра в системе. То есть указанная конструкция гарантирует, что stderr так же будет перенаправлен в /dev/null. Мы выбрасываем информацию, потому что нас интересует только нулевой или ненулевой код, возвращаемый командой. Ноль сообщает об успехе; ненулевое значение — об ошибке.

Количество проверенных внутренних страниц определяется количеством строк в файле traverse.dat , а число внешних ссылок можно найти в файле reject.dat . Если указан флаг −a, сценарий выводит все внешние ссылки, независимо от их доступности или недоступности. В противном случае отображаются адреса URL только из недоступных ссылок.

Запуск сценария

Чтобы запустить сценарий, просто передайте ему в аргументе URL сайта для проверки.

Результаты

Проверим сайт http://intuitive.com/на наличие недействительных ссылок, как показано в листинге 9.6.

Листинг 9.6.Запуск сценария checkexternal для проверки http://intuitive.com/

$ checkexternal −a http://intuitive.com/

http://chemgod.slip.umd.edu/~kidwell/weather.html fails with error code 6

http://epoch.oreilly.com/shop/cart.asp fails with error code 7

http://ezone.org:1080/ez/ fails with error code 7

http://fx.crewtags.com/blog/ fails with error code 6

http://linc.homeunix.org:8080/reviews/wicked.html fails with error code 6

http://links.browser.org/ fails with error code 6

http://nell.boulder.lib.co.us/ fails with error code 6

http://rpms.arvin.dk/slocate/ fails with error code 6

http://rss.intuitive.com/ fails with error code 6

http://techweb.cmp.com/cw/webcommerce fails with error code 6

http://tenbrooks11.lanminds.com/ fails with error code 6

http://www.101publicrelations.com/blog/ fails with error code 6

http://www.badlink/somewhere.html fails with error code 6

http://www.bloghop.com/ fails with error code 6

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Дейв Тейлор читать все книги автора по порядку

Дейв Тейлор - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание отзывы


Отзывы читателей о книге Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание, автор: Дейв Тейлор. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x