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

Здесь есть возможность читать онлайн «Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб., Год выпуска: 2017, ISBN: 2017, Издательство: Питер, Жанр: Программирование, ОС и Сети, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

··exit 1

fi

fname="$(echo $1 | sed 's/http: \/\///g' | tr '/?&' '…')"

baseurl="$(echo $1 | cut −d/ −f1-3)/"

# Загрузить копию веб-страницы и поместить в файл архива. Обратите

#·· внимание, что изменения определяются по чистому содержимому

#·· (используется флаг −dump, а не −source), поэтому можно не заниматься

#·· парсингом разметки HTML….

lynx −dump "$1" | uniq > $sitearchive/${fname}.new

if [-f "$sitearchive/$fname"]; then

··# Этот сайт просматривался прежде, так что сравним старую и новую

··#·· копии с помощью diff.

··diff $sitearchive/$fname $sitearchive/${fname}.new > $tmpchanges

··if [-s $tmpchanges]; then

····echo "Status: Site $1 has changed since our last check."

··else

····echo "Status: No changes for site $1 since last check."

····rm −f $sitearchive/${fname}.new··# Ничего нового…

····exit 0·························· # Изменений нет, выйти.

··fi

else

··echo "Status: first visit to $1. Copy archived for future analysis."

··mv $sitearchive/${fname}.new $sitearchive/$fname

··chmod $fileperm $sitearchive/$fname

··exit 0

fi

# Сюда сценарий попадает, когда обнаружены изменения и нужно послать

#·· пользователю содержимое файла. new и заменить им старую копию

#·· для следующего вызова сценария.

if ["$2"!= "-"]; then

··(echo "Content-type: text/html"

····echo "From: $fromaddr (Web Site Change Tracker)"

····echo "Subject: Web Site $1 Has Changed"

картинка 378····echo "To: $2"

····echo ""

картинка 379····lynx −s — dump $1 | \

картинка 380····sed −e "s|src=\"|SRC=\"$baseurl|gi" \

картинка 381········-e "s|href=\"|HREF=\"$baseurl|gi" \

картинка 382········-e "s|$baseurl\/http:|http:|g"

··) | $sendmail −t

else

··# Вывод различий на экран не кажется хорошим решением.

··#·· Сможете предложить что-то получше?

··diff $sitearchive/$fname $sitearchive/${fname}.new

fi

# Обновить сохраненную копию веб-сайта.

mv $sitearchive/${fname}.new $sitearchive/$fname

chmod 755 $sitearchive/$fname

exit 0

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

Получив URL и адрес электронной почты, этот сценарий извлекает содержимое веб-страницы и сравнивает его с содержимым сайта, сохраненным при предыдущей проверке. Если сайт изменился, новая страница отправляется по электронной почте указанному адресату после небольших изменений, цель которых — обеспечить работоспособность ссылок на изображения и в атрибутах href. Остановимся подробнее на этих изменениях, начиная со строки картинка 383.

Команда lynx извлекает исходный код веб-страницы картинка 384, после чего команда sed вносит в него три разных изменения. Во-первых, все фрагменты SRC=" замещаются фрагментами SRC="baseurl/ картинка 385, чтобы заменить все относительные пути вида SRC="logo.gif" абсолютными путями, включающими доменное имя, и тем самым обеспечить их работоспособность. Для сайта с доменным именем http://www.intuitive.com/упомянутая выше ссылка примет вид SRC="http://www.intuitive.com/logo.gif". Аналогично изменяются атрибуты href картинка 386. Затем, чтобы гарантировать целостность всех ссылок, измененных на предыдущих этапах, выполняется третье изменение, в рамках которого из исходного кода HTML удаляются строки baseurl, если они были добавлены по ошибке картинка 387. Например, ссылка HREF="http://www.intuitive.com/http://www.somewhereelse.com/link" явно недействительная, и ее следует исправить.

Обратите также внимание, что адрес получателя указан в команде echo картинка 388(echo "To: $2"), а не передается команде sendmail как аргумент. Это простая предохранительная мера: передавая адрес команде sendmail во входном потоке (которая знает, что должна извлечь адрес получателя из потока благодаря флагу −t), мы избавляем себя от необходимости беспокоиться о пользователях, любящих поиграть с такими адресами, как "joe;cat /etc/passwd|mail larry". Этот прием демонстрирует безопасный способ вызова sendmail из сценариев командной оболочки.

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

Данный сценарий требует два параметра: URL сайта (для правильной работы сценария должны использоваться полные адреса URL, начинающиеся с http://) и адрес электронной почты (или список адресов, разделенных запятыми), куда следует послать измененную веб-страницу. Или, если хотите, вместо адреса электронной почты можно просто использовать — (дефис), чтобы только вывести на экран результаты сравнения командой diff.

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

Интервал:

Закладка:

Сделать

Похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание»

Представляем Вашему вниманию похожие книги на «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x