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

Интервал:

Закладка:

Сделать

····uuencode $outfname | \

····mail −s "${3:-Backup archive for $(date)}" "$2"

··echo "Done. $(basename $0) backed up the following files: "

··sed 's/^/ /' $infile

··/bin/echo −n "and mailed them to $2 "

··if [! -z "$3"]; then

····echo "with requested target directory $3"

··else

····echo ""

··fi

··exit 0

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

Убедившись с помощью простых проверок в том, что продолжение работы возможно, сценарий обрабатывает список важных файлов, передаваемый в первом аргументе командной строки, в цикле while картинка 453, экранируя пробелы в именах файлов. Экранирование заключается в добавлении символа обратного слеша перед каждым пробелом. Затем командой tar картинка 454создается архив. Она не может читать список файлов со стандартного ввода, поэтому список передается в виде аргументов, с помощью команды cat.

Архиватор tar автоматически сжимает архив, а следующая за ним команда uuencode гарантирует возможность отправки полученного архива по электронной почте без повреждений. Конечный результат заключается в получении электронного письма с закодированным tar-архивом в удаленной системе.

ПРИМЕЧАНИЕ

Программа uuencode кодирует двоичные данные так, что они могут передаваться без повреждений через систему электронной почты. Дополнительную информацию смотрите в странице справочного руководства man uuencode.

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

Этот сценарий принимает два обязательных аргумента: имя файла со списком файлов для архивирования и резервного копирования, а также адрес электронной почты получателя сжатого и закодированного архива. Список файлов может быть таким же простым, как показано ниже:

$ cat filelist

*.sh

*.html

Результаты

В листинге 10.8 демонстрируется запуск сценария remotebackup для копирования всех HTML-файлов и файлов сценариев, имеющихся в текущем каталоге, и вывод результатов.

Листинг 10.8.Запуск сценария remotebackup для копирования HTML-файлов и файлов сценариев

$ remotebackup filelist taylor@intuitive.com

Done. remotebackup backed up the following files:

·· *.sh

·· *.html

and mailed them to taylor@intuitive.com

$ cd /web

$ remotebackup backuplist taylor@intuitive.com mirror

Done. remotebackup backed up the following files:

·· ourecopass

and mailed them to taylor@intuitive.com with requested target directory mirror

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

Прежде всего, если у вас установлена современная версия tar, возможно, она поддерживает чтение списка файлов со стандартного ввода stdin (например, GNU-версия tar поддерживает флаг −T, при наличии которого программа читает список файлов со стандартного ввода). В этом случае сценарий можно сократить, убрав команду cat, передающую список файлов через аргументы командной строки.

Файл архива можно распаковывать или просто сохранять, запуская раз в неделю сценарий очистки почтового ящика, предотвращающий его переполнение. Простейший сценарий очистки приводится в листинге 10.9.

Листинг 10.9.Сценарий trimmailbox для использования в комплексе со сценарием remotebackup

#!/bin/bash

# trimmailbox — простой сценарий, гарантирующий сохранность только четырех

#·· последних сообщений в почтовом ящике пользователя. Предполагает

#·· использование реализации Berkeley Mail (Mailx bkb mail) — требует

#·· модификации для других почтовых систем!

keep=4 # По умолчанию сохраняет только четыре последних сообщения.

totalmsgs="$(echo 'x' | mail | sed −n '2p' | awk '{print $2}')"

if [$totalmsgs −lt $keep]; then

··exit 0····# Ничего делать не надо.

fi

topmsg="$(($totalmsgs −$keep))"

mail > /dev/null << EOF

d1-$topmsg

q

EOF

exit 0

Этот короткий сценарий удаляет из почтового ящика все письма, кроме нескольких самых последних ($keep). Очевидно, что, если в роли архивного хранилища используется почтовый ящик Hotmail или Yahoo! Mail, этот сценарий не будет работать и вам придется периодически чистить его вручную.

№ 77. Мониторинг состояния сети

Программа netstat считается одной из самых запутанных утилит администрирования Unix, что очень плохо, потому что в действительности она позволяет получить много полезной информации о пропускной способности и производительности сети. При вызове с флагом −s программа netstat выводит массу информации о каждом сетевом протоколе, поддерживаемом системой, включая TCP, UDP, IPv4/v6, ICMP, IPsec и другие. Большинство из них не поддерживаются в типичной конфигурации. Особый интерес, как правило, вызывает протокол TCP. Этот сценарий анализирует трафик, пересылаемый по протоколу TCP, определяет процент пакетов, потерянных при передаче и выводит предупреждение, если какие-то из значений выходят за рамки допустимого.

Анализ функционирования сети по значениям, накопленным за продолжительный период, определенно полезен, но намного лучше иметь возможность анализировать данные с тенденциями их изменения. Если, к примеру, система регулярно теряет 1,5 % пакетов, а в последние три дня этот показатель подскочил до 7,8 %, похоже, назревает проблема, которую требуется изучить более детально.

Вот почему сценарий состоит из двух частей. Первая часть, представленная в листинге 10.10, — это короткий сценарий, который, как предполагается, должен запускаться каждые 10–30 минут для записи ключевых статистик в файл журнала. Второй сценарий (листинг 10.11) выполняет анализ файла журнала, сообщает о нормальных параметрах функционирования сети и любых аномалиях или других значениях, постоянно увеличивающихся с течением времени.

ВНИМАНИЕ

Некоторые диалекты Unix не могут выполнять этот код в том виде, в каком он приводится здесь (но мы подтверждаем, что он работает в OS X)! Как оказывается, вывод команды netstat в разных версиях Unix и Linux имеет множество мелких различий (где-то изменены пробелы или пунктуация). Нормализация вывода netstat могла бы сама по себе стать прекрасным сценарием.

Код

Листинг 10.10.Сценарий getstats

··#!/bin/bash

··# getstats — каждые 'n' минут сохраняет значения, получаемые

··#·· с помощью netstat (из crontab).

··logfile="/Users/taylor/.netstatlog" # Измените в соответствии с вашей конфигурацией.

··temp="/tmp/getstats.$$.tmp"

··trap "$(which rm) −f $temp" 0

··if [! -e $logfile]; then·· # Первый запуск?

····touch $logfile

··fi

··(netstat −s — p tcp > $temp

··# Проверьте свой файл журнала после первого запуска: некоторые версии netstat

··#·· выводят несколько строк вместо одной, именно поэтому здесь используется

··#·· последовательность "| head -1".

картинка 455··sent="$(grep 'packets sent' $temp | −d— d\ −f1 | sed \

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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