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

Интервал:

Закладка:

Сделать

sftp> quit

Done. All files synchronized up with intuitive.com

Одним из дальнейших усовершенствований мог бы стать вызов ssync из cron каждые несколько часов в рабочие дни, workday, чтобы резервное копирование локальных файлов осуществлялось незаметно и без участия человека.

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

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

№ 73. Исследование журнала access_log веб-сервера Apache

Если вы управляете веб-сервером Apache или похожим на него, где используется обобщенный формат журналирования (Common Log Format), вы сможете быстро выполнить статистический анализ с помощью сценария командной оболочки. В стандартной конфигурации веб-сервер ведет для сайта журналы access_log и error_log (обычно в /var/log , но точный путь зависит от системы). Если вы поддерживаете собственный сервер, вам определенно стоит архивировать эту ценную информацию.

В табл. 10.1 перечислены поля в файле access_log .

Таблица 10.1.Значения полей в файле access_log
Поле Значение
1 IP-адрес хоста, обратившегося к серверу
2–3 Защитная информация для соединений HTTPS/SSL
4 Дата и часовой пояс данного запроса
5 Метод вызова
6 Запрошенный URL
7 Использованный протокол
8 Код результата
9 Число переданных байтов
10 Ссылающийся домен
11 Строка идентификации браузера

Типичная строка в access_log имеет следующий вид:

65.55.219.126 — [04/Jul/2016:14:07:23 +0000] "GET /index.rdf HTTP/1.0" 301

310 "-" "msnbot-UDiscovery/2.0b (+http://search.msn.com/msnbot.htm)""

Код результата 301 (поле 8) указывает, что запрос был успешно обработан. Ссылающийся домен (поле 10) определяет URL страницы, которую пользователь просматривал непосредственно перед запросом. Десять лет тому назад в этом поле передавался URL предыдущей страницы; теперь, по соображениям безопасности, в нем обычно указывается "-", как показано в примере.

Количество обращений к сайту можно определить, подсчитав строки в файле журнала, а диапазон дат записей в файле — по первой и последней строкам.

$ wc −l access_log

·· 7836 access_log

$ head -1 access_log; tail -1 access_log

69.195.124.69 — [29/Jun/2016:03:35:37 +0000]…

65.55.219.126 — [04/Jul/2016:14:07:23 +0000]…

Используя эту информацию, сценарий в листинге 10.1 выводит большой объем статистической информации из файла журнала access_log в формате веб-сервера Apache. Предполагается, что сценарии scriptbc и nicenumber, написанные нами в главе 1, находятся в одном из каталогов, перечисленных в переменной окружения PATH.

Код

Листинг 10.1.Сценарий webaccess

··#!/bin/bash

··# webaccess — анализирует файл журнала access_log в формате веб-сервера

··#·· Apache, извлекая полезную и интересную статистическую информацию.

··bytes_in_gb=1048576

··# Измените следующую переменную, чтобы она соответствовала имени хоста

··#·· вашего веб-сервера, чтобы отфильтровать запросы, обусловленные

··#·· внутренними переходами, при анализе ссылающихся доменов.

··host="intuitive.com"

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

····echo "Usage: $(basename $0) logfile" >&2

····exit 1

··fi

··if [! -r "$1"]; then

····echo "Error: log file $1 not found." >&2

····exit 1

··fi

картинка 427firstdate="$(head -1 "$1" | awk '{print $4}' | sed 's/\[//')"

··lastdate="$(tail -1 "$1" | awk '{print $4}' | sed 's/\[//')"

··echo "Results of analyzing log file $1"

··echo ""

··echo " Start date: $(echo $firstdate|sed 's/:/ at /')"

··echo " End date: $(echo $lastdate|sed 's/:/ at /')"

картинка 428··hits="$(wc −l < "$1" | sed 's/[^[: digit: ]]//g')"

··echo "········ Hits: $(nicenumber $hits) (total accesses)"

картинка 429··pages="$(grep −ivE '(.gif|.jpg|.png)' "$1" | wc −l | sed 's/[^[: digit: ]]//g')"

··echo "·· Pageviews: $(nicenumber $pages) (hits minus graphics)"

··totalbytes="$(awk '{sum+=$10} END {print sum}' "$1")"

··/bin/echo −n " Transferred: $(nicenumber $totalbytes) bytes "

··if [$totalbytes −gt $bytes_in_gb]; then

····echo "($(scriptbc $totalbytes / $bytes_in_gb) GB)"

··elif [$totalbytes −gt 1024]; then

····echo "($(scriptbc $totalbytes / 1024) MB)"

··else

····echo ""

··fi

··# Теперь выберем из журнала некоторые полезные данные.

··echo ""

··echo "The 10 most popular pages were: "

картинка 430··awk '{print $7}' "$1" | grep −ivE '(.gif|.jpg|.png)' | \

···· sed 's/\/$//g' | sort | \

···· uniq −c | sort −rn | head -10

··echo ""

··echo "The 10 most common referrer URLs were: "

картинка 431··awk '{print $11}' "$1" | \

····grep −vE "(^\"-\"$|/www.$host|/$host)" | \

····sort | uniq −c | sort −rn | head -10

··echo ""

··exit 0

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

Рассмотрим каждый блок как отдельный небольшой сценарий. Например, первые несколько строк извлекают начальную и конечную дату (переменные firstdate и lastdate) картинка 432, просто читая четвертое поле в первой и последней строках в файле. Количество посещений определяется подсчетом строк в файле с помощью wc картинка 433, а количество просмотренных страниц — как разность посещений и запросов файлов изображений (то есть файлов с расширениями .gif, jpg и .png ). Общее количество отправленных байтов определяется как сумма значений десятого поля во всех строках, которая затем обрабатывается сценарием nicenumber для удобочитаемости.

Чтобы выяснить, какие страницы наиболее популярны, сначала из журнала извлекаются запрошенные страницы, и из их числа исключаются все файлы изображений картинка 434. Далее вызывается команда uniq −c для сортировки и определения числа вхождений каждой уникальной записи. В финале выполняется еще одна сортировка, чтобы страницы с наибольшим количеством вхождений оказались в начале списка. Вся эта процедура выполняется строкой картинка 435.

Обратите внимание, как попутно выполняется нормализация: команда sed отсекает завершающие символы слеша, чтобы имена, такие как /subdir/ и /subdir, воспринимались как одно и то же.

Аналогично разделу, извлекающему десяток наиболее популярных страниц, раздел картинка 436извлекает информацию о ссылающихся доменах.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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