Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
- Название:Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание
- Автор:
- Жанр:
- Издательство:Питер
- Год:2017
- Город:СПб.
- ISBN:978-5-496-03029-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дейв Тейлор - Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание краткое содержание
Цель этой книги — продемонстрировать практические приемы программирования сценариев на bash и познакомить с самыми распространенными утилитами на коротких и компактных примерах, не вдаваясь в излишние подробности. Экспериментируйте с этими сценариями — ломайте, исправляйте и приспосабливайте их под свои нужды, чтобы понять, как они работают. Только так вы сможете решать самые сложные задачи.
Сценарии командной оболочки. Linux, OS X и Unix. 2-е издание - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
№ 65. Динамическое конструирование веб-страниц
Многие веб-сайты включают графики и другие элементы, меняющиеся ежедневно. Наглядным примером могут служить веб-комиксы, такие как «Kevin & Kell» Билла Холбрука (Bill Holbrook). На главной странице его сайта всегда отображается самая последняя серия комикса, и, оказывается, нетрудно выяснить, какие соглашения об именовании отдельных изображений используются на сайте, и использовать их, чтобы поместить комиксы на свою страницу, как показано в листинге 8.6.

Рис. 8.2.Результаты поиска в DuckDuckGo появились в браузере, а строка поиска зафиксирована в журнале!
Предупреждение от наших юристов: собирая содержимое других веб-сайтов, необходимо учитывать массу вопросов, связанных с авторским правом. Для данного примера мы прямо попросили у Билла Холбрука разрешения включить его комиксы в данную книгу. Мы советуем вам также получать разрешение на воспроизведение на своем сайте любых материалов, защищенных авторским правом, чтобы не вырыть себе глубокую юридическую яму.
Код
Листинг 8.6.Сценарий kevin-and-kell
#!/bin/bash
# kevin-and-kell — динамически создает веб-страницу для отображения последней
#·· серии комикса "Kevin and Kell" Билла Холбрука (Bill Holbrook).
#·· <���Ссылка на комикс используется с разрешения автора>
month="$(date +%m)"
··day="$(date +%d)"
year="$(date +%y)"
echo "Content-type: text/html"
echo ""
echo "
"
echo "
echo "
echo "
echo "
Bill Holbrook's Kevin & Kell |
---|
|
"
|
"
exit 0
Как это работает
Беглого обзора исходного кода главной страницы сайта «Kevin & Kell» оказалось достаточно, чтобы понять, что URL со ссылкой на данный комикс включает текущий год, месяц и число:
http://www.kevinandkell.com/2016/strips/kk20160804.jpg
Чтобы динамически сконструировать страницу, включающую ссылку на эту серию, сценарий должен определить текущий год (две цифры), месяц и число (оба с ведущими нулями, если необходимо). Остальная часть сценария просто создает HTML-обертку для придания странице привлекательного внешнего вида. В действительности это очень простой сценарий, учитывая получаемые возможности.
Запуск сценария
Подобно другим CGI-сценариям в этой главе, данный сценарий нужно поместить в соответствующий каталог, чтобы к нему можно было обратиться из Интернета, и дать ему соответствующие права. Затем останется только ввести соответствующий URL в адресную строку браузера.
Результаты
Веб-страница автоматически изменяется каждый день. На рис. 8.3 показана страница с серией, вышедшей 4 августа 2016 года.

Рис. 8.3.Веб-страница с комиксом «Kevin & Kell», сконструированная динамически
Усовершенствование сценария
Эту идею нетрудно применить к чему угодно в Интернете, если она вам понравилась. Вы можете читать заголовки с сайта CNN или South China Morning Post или извлекать случайные рекламные объявления с перегруженного сайта. Но повторим: если вы собираетесь сделать частью своего сайта какой-то контент, проверьте, является ли он общедоступным, или получите разрешение на его использование.
№ 66. Превращение веб-страниц в электронные письма
Объединив метод обратного инжиниринга соглашений об именовании файлов с утилитой слежения за изменениями на веб-сайте, представленной в сценарии № 62 (глава 7), можно организовать отправку на свой электронный адрес веб-страниц, в которых изменилось не только содержимое, но и имя файла. Этот сценарий не требует использования веб-сервера и запускается так же, как другие сценарии в предыдущих главах. Но имейте в виду: Gmail и другие провайдеры услуг электронной почты могут фильтровать письма, отправленные локальной утилитой Sendmail. Если вы не получите электронного письма от следующего сценария, попробуйте воспользоваться для тестирования такой службой, как Mailinator ( http://mailinator.com/).
Код
В качестве примера используем сайт «The Straight Dope», остроумную колонку Сесила Адамса (Cecil Adams), пишущего для «Chicago Reader». Мы легко можем реализовать автоматическую отправку по электронной почте новой колонки «Straight Dope» на указанный адрес, как показано в листинге 8.7.
Листинг 8.7.Сценарий getdope
··#!/bin/bash
··# getdope — загружает последнюю колонку "The Straight Dope."
··#·· Настройте ежедневный запуск сценария из cron, если вам это интересно.
··now="$(date +%y%m%d)"
··start="http://www.straightdope.com/ "
··to="testing@yourdomain.com"··# Замените нужным адресом.
··# Для начала получить URL текущей колонки.
··URL="$(curl −s "$start" | \
··grep −A1 'teaser' | sed −n '2p' | \
··cut −d\" −f2 | cut −d\" −f1)"
··# Теперь, вооружившись этими данными, отправим электронное письмо.
··(cat << EOF
··Subject: The Straight Dope for $(date "+%A, %d %B, %Y")
··From: Cecil Adams
··Content-type: text/html
··To: $to
··EOF
··curl "$URL"
··) | /usr/sbin/sendmail −t
··exit 0
Как это работает
Страница с последней колонкой имеет URL, который нужно извлекать из главной страницы. Как показало исследование исходного кода, каждая колонка идентифицируется атрибутом class"="teaser" и самая свежая колонка всегда следует первой. То есть простой последовательности команд, начинающейся в строке , должно быть достаточно, чтобы извлечь URL самой свежей колонки.
Команда curl извлекает исходный код главной страницы, команда grep выводит все строки, содержащие совпадения с "teaser", сопровождая каждую из них строкой, следующей за ней, и команда sed оставляет в выводе только вторую строку, чтобы упростить извлечение ссылки на самую свежую статью.
Запуск сценария
Чтобы извлечь только адрес URL, достаточно удалить все, вплоть до первой двойной кавычки, и все, что следует за первой двойной кавычкой в остатке. Протестируйте эту последовательность в командной строке, шаг за шагом, чтобы увидеть, что происходит на каждом этапе.
Результаты
Интервал:
Закладка: