Дейв Тейлор - Сценарии командной оболочки. 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-е издание - читать книгу онлайн бесплатно, автор Дейв Тейлор
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Самое примечательное, что этот трюк легко реализовать в виде сценария командной оболочки, содержащего awk-программу длиной всего в несколько строк, который вызывается из веб-страницы посредством SSI или из плавающего кадра (iframe, способ включения фрагмента страницы, имеющего свой URL, отличный от URL самой страницы). Такой сценарий представлен в листинге 8.9.

Код

Листинг 8.9.Сценарий randomquote

#!/bin/bash

# randomquote — получая файл с данными, в котором каждая запись находится

#·· в отдельной строке, случайно выбирает одну строку и выводит ее. Хорошо

#·· подходит для вызова из веб-страницы посредством SSI.

awkscript="/tmp/randomquote.awk.$$"

if [$# −ne 1]; then

··echo "Usage: randomquote datafilename" >&2

··exit 1

elif [! -r "$1"]; then

··echo "Error: quote file $1 is missing or not readable" >&2

··exit 1

fi

trap "$(which rm) −f $awkscript" 0

cat << "EOF" > $awkscript

BEGIN { srand() }

······{ s[NR] = $0 }

END·· { print s[randint(NR)] }

function randint(n) { return int (n * rand()) + 1 }

EOF

awk −f $awkscript < "$1"

exit 0

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

Получая имя файла с данными, сценарий сначала проверяет существование файла и его доступность для чтения. Затем он передает весь файл короткому awk-сценарию, который сохраняет строки из него в массиве, подсчитывает их количество и затем случайно выбирает одну и выводит ее на экран.

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

Этот сценарий можно внедрить в SSI-совместимую веб-страницу, как показано ниже:

Большинство серверов требуют, чтобы страницы с подобными вставками хранились в файлах с расширением .shtml , а не с более традиционными .html и .htm . Благодаря этому простому изменению вывод сценария randomquote будет внедряться в содержимое веб-страницы.

Результаты

Этот сценарий можно опробовать в командной строке, вызвав его, как показано в листинге 8.10.

Листинг 8.10.Запуск сценария randomquote

$ randomquote samplequotes.txt

Neither rain nor sleet nor dark of night…

$ randomquote samplequotes.txt

The rain in Spain stays mainly on the plane? Does the pilot know about this?

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

Нетрудно создать файл с данными для сценария randomquote, содержащий список имен файлов графических изображений. Тогда с помощью этого сценария можно было бы организовать выбор случайного изображения. Немного подумав, вы найдете множество способов применения и развития этой идеи.

Глава 9. Администрирование веб-сервера

Если вы занимаетесь поддержкой веб-сервера или отвечаете за работу веб-сайта, простого или сложного, то наверняка регулярно решаете какие-то повторяющиеся задачи, такие как выявление недействительных внутренних или внешних ссылок. Многие из этих задач можно автоматизировать с использованием сценариев командной оболочки. То же касается некоторых типичных клиент/серверных задач, таких как управление доступом к информации в каталогах веб-сервера с использованием паролей.

№ 69. Выявление недействительных внутренних ссылок

Несколько сценариев в главе 7 продемонстрировали отдельные возможности текстового веб-браузера lynx, но в этой замечательной программе скрыто намного больше. Одна из таких возможностей, особенно полезная для администраторов веб-серверов, — функция traverse (включается флагом −traversal), заставляющая lynx опробовать все ссылки на сайте и отыскать среди них недействительные. Эту функцию можно задействовать в коротком сценарии, как тот, что показан в листинге 9.1.

Код

Листинг 9.1.Сценарий checklinks

#!/bin/bash

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

#·· о любых ошибках в файле "traverse.errors".

# Удалить по завершении все служебные файлы, созданные программой lynx.

trap "$(which rm) −f traverse.dat traverse2.dat" 0

if [-z "$1"]; then

··echo "Usage: checklinks URL" >&2

··exit 1

fi

baseurl="$(echo $1 | cut −d/ −f3 | sed 's/http: \/\///')"

lynx картинка 404−traversal −accept_all_cookies картинка 405−realm "$1" > /dev/null

if [-s "traverse.errors"]; then

картинка 406··/bin/echo −n $(wc −l < traverse.errors) errors encountered.

··echo Checked $(grep '^http' traverse.dat | wc −l) pages at ${1}:

··sed "s|$1 ||g" < traverse.errors

··mv traverse.errors ${baseurl}.errors

··echo "A copy of this output has been saved in ${baseurl}.errors"

else

··/bin/echo −n "No errors encountered.";

··echo Checked $(grep '^http' traverse.dat | wc −l) pages at ${1}

fi

if [-s "reject.dat"]; then

··mv reject.dat ${baseurl}.rejects

fi

exit 0

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

Основная работа в этом сценарии выполняется программой lynx картинка 407; сам сценарий просто играет с файлами, которые создает lynx, извлекая из них информацию и отображая ее в удобочитаемом виде. В выходной файл reject.dat программа lynx записывает ссылки с внешними адресами URL (см. ниже сценарий № 70, который использует этот файл), в файл traverse.errors — недействительные ссылки (цель данного сценария), в файл traverse.dat — список всех проверенных страниц, и в файл traverse2.dat — тот же список страниц, что и в файл traverse.dat , но с дополнительно включенными заголовками всех исследованных страниц.

Команда lynx поддерживает большое количество разных аргументов, и в данном случае нам потребовалось использовать −accept_all_cookies картинка 408, чтобы программа не замучила нас вопросами — принимать или нет cookie от страницы. Мы также использовали аргумент −realm, чтобы проверке подвергались только страницы указанного уровня на сайте и «ниже», а не все ссылки, которые будут встречены на пути. Без аргумента −realm программа lynx могла бы отыскать тысячи и тысячи страниц. Мы попробовали выполнить функцию −traversal для адреса http://www.intuitive.com/wicked/без −realm, и она обнаружила более 6500 страниц после более чем двухчасовой работы. С фла −r— realm было найдено 146 страниц, на исследование которых ушло несколько минут.

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

Чтобы запустить сценарий, просто передайте ему адрес URL в командной строке. Сценарий способен выполнить анализ любого веб-сайта, но имейте в виду: проверка таких гигантов, как Google или Yahoo! может затянуться навечно и закончиться исчерпанием места на вашем диске.

Результаты

Давайте проверим маленький веб-сайт на наличие ошибок (листинг 9.2).

Листинг 9.2.Проверка веб-сайта, не имеющего ошибок, с помощью checklinks

$ checklinks http://www.404-error-page.com/

No errors encountered. Checked 1 pages at http://www.404-error-page.com/

Как видите, все в порядке. А если проверить сайт немного большего размера? В листинге 9.3 показано, что мог бы вывести сценарий checklinks в результате проверки сайта, содержащего недействительные ссылки.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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