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

Интервал:

Закладка:

Сделать

····exit 1

··fi

··echo Input file $1 has $(wc −l < "$1") entries.

··start="$(grep −E '\[.*:.*:.*\]' "$1" | head -1 \

····| awk '{print $1" "$2" "$3" "$4" "$5 }')"

··end="$(grep −E '\[.*:.*:.*\]' "$1" | tail -1 \

····| awk '{print $1" "$2" "$3" "$4" "$5 }')"

··/bin/echo −n "Entries from $start to $end"

··echo ""

··### Проверить типичные и хорошо известные ошибки:

··checkfor "$1" "File does not exist"

··checkfor "$1" "Invalid error redirection directive"

··checkfor "$1" "Premature EOF"

··checkfor "$1" "Script not found or unable to stat"

··checkfor "$1" "Premature end of script headers"

картинка 445··grep −vE "$screen" "$1" | grep "\[error\]" | grep "\[client " \

····| sed 's/\[error\]/\`/' | cut −d\` −f2 | cut −d\ −f4- \

картинка 446····| sort | uniq −c | sort −rn | sed 's/^/ /' | head −$length > $temp

··if [$(wc −l < $temp) −gt 0]; then

····echo ""

····echo "Additional error messages in log file: "

····cat $temp

··fi

··echo ""

··echo "And non-error messages occurring in the log file: "

картинка 447··grep −vE "$screen" "$1" | grep −v "\[error\]" \

····| sort | uniq −c | sort −rn \

····| sed 's/^/ /' | head −$length

··exit 0

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

Этот сценарий сканирует файл журнала error_log на наличие пяти ошибок, указанных в вызовах функции checkfor, с помощью awk извлекая из каждой записи последнее поле, то есть поле с номером в переменной $NF (которая представляет количество полей в данной записи). Затем передает результат последовательности команд sort | uniq −c | sort −rn картинка 448, чтобы проще было определить источник ошибок данной категории.

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

Последние несколько строк сценария находят наиболее распространенные ошибки, не относящиеся к предопределенным категориям, но являющиеся стандартными для формата журнала error_log веб-сервера Apache. Команда grep картинка 449представляет собой часть длинного конвейера.

Затем сценарий находит не обнаруженные ранее наиболее распространенные ошибки, которые не являются стандартными для формата журнала error_log веб-сервера Apache. И снова команда grep картинка 450составляет часть длинного конвейера.

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

Чтобы запустить этот сценарий, просто передайте ему в единственном аргументе полный путь к файлу журнала error_log в стандартном формате веб-сервера Apache, как показано в листинге 10.6. Если передать ему дополнительный аргумент −l length, он выведет указанное количество совпадений в каждой категории вместо пяти по умолчанию.

Результаты

Листинг 10.6.Результаты обработки журнала error_log веб-сервера Apache с помощью weberrors

$ weberrors error_log

Input file error_log has 768 entries.

Entries from [Mon Jun 05 03:35:34 2017] to [Fri Jun 09 13:22:58 2017]

File does not exist errors:

······ 94 /var/www/vhosts/default/htdocs/mnews.htm

······ 36 /var/www/vhosts/default/htdocs/robots.txt

······ 15 /var/www/vhosts/default/htdocs/index.rdf

······ 10 /var/www/vhosts/default/htdocs/clientaccesspolicy.xml

········5 /var/www/vhosts/default/htdocs/phpMyAdmin

Script not found or unable to stat errors:

········1 /var/www/vhosts/default/cgi-binphp5

········1 /var/www/vhosts/default/cgi-binphp4

········1 /var/www/vhosts/default/cgi-binphp.cgi

········1 /var/www/vhosts/default/cgi-binphp-cgi

········1 /var/www/vhosts/default/cgi-binphp

Additional error messages in log file:

········1 script '/var/www/vhosts/default/htdocs/wp-trackback.php' not found

or unable to stat

········1 script '/var/www/vhosts/default/htdocs/sprawdza.php' not found or

unable to stat

········1 script '/var/www/vhosts/default/htdocs/phpmyadmintting.php' not

found or unable to stat

And non-error messages occurring in the log file:

········6 /usr/lib64/python2.6/site-packages/mod_python/importer.py:32:

DeprecationWarning: the md5 module is deprecated; use hashlib instead

········6 import md5

········3 [Sun Jun 25 03:35:34 2017] [warn] RSA server certificate CommonName

(CN) `Parallels Panel’ does NOT match server name!?

········1 sh: /usr/local/bin/zip: No such file or directory

········1 sh: /usr/local/bin/unzip: No such file or directory

№ 76. Предотвращение катастрофических последствий с использованием удаленного архива

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

Решение задачи выглядит сложнее, чем есть на самом деле, потому что, как показано в листинге 10.7, «архив» — это всего лишь файл, посылаемый по электронной почте в удаленный почтовый ящик, который может находиться на серверах Yahoo! или Gmail. Список архивируемых файлов хранится в отдельном файле данных и допускает использование шаблонных символов, поддерживаемых командной оболочкой. Имена файлов могут содержать пробелы, что никак не усложняет сценарий, как вы увидите сами.

Код

Листинг 10.7.Сценарий remotebackup

··#!/bin/bash

··# remotebackup — принимает список файлов и каталогов, создает единый

··#·· сжатый архив и отправляет его по электронной почте на удаленный сайт

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

··#·· пользовательских файлов, но не может служить заменой более строгой

··#·· системы резервного копирования.

··outfile="/tmp/rb.$$.tgz"

··outfname="backup.$(date +%y%m%d). tgz"

··infile="/tmp/rb.$$.in"

··trap "$(which rm) −f $outfile $infile" 0

··if [$# −ne 2 −a $# −ne 3]; then

····echo "Usage: $(basename $0) backup-file-list remoteaddr {targetdir}" >&2

····exit 1

··fi

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

····echo "Error: backup list $1 is empty or missing" >&2

····exit 1

··fi

··# Сканировать записи и создать фиксированный список в файле infile.

··#·· В ходе этой операции выполняются экранирование пробелов и подстановка

··#·· шаблонных символов в именах файлов, то есть имя файла "this file"

··#·· превращается в this\ file, что избавляет от необходимости использовать

··#·· кавычки.

картинка 451··while read entry; do

····echo "$entry" | sed −e 's/ /\\ /g' >> $infile

··done < "$1"

··# Фактическое создание архива, его кодирование и отправка.

картинка 452··tar czf −$(cat $infile) | \

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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