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

Интервал:

Закладка:

Сделать

картинка 349··ftp −np << EOF

··open $server

··user ftp $anonpass

··get "$filename" "$basefile"

··quit

··EOF

··if [$? -eq 0]; then

····ls −l $basefile

··fi

··exit 0

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

Основу сценария составляет последовательность команд, передаваемых программе FTP, которая начинается в строке картинка 350. Эта последовательность иллюстрирует основы пакетной работы: последовательность инструкций передается отдельной программе так, что принимающая программа (в данном случае FTP) думает, будто инструкции вводятся пользователем. Эта последовательность предписывает открыть соединение с сервером, вводит имя анонимного пользователя (FTP) и пароль по умолчанию, указанный в разделе с настройками сценария (обычно адрес электронной почты), затем дает команду загрузить файл с FTP-сервера и завершает программу после загрузки.

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

Сценарий очень прост в использовании: достаточно указать полный адрес URL файла на FTP-сервере, и файл будет загружен в текущий каталог, как показано в листинге 7.2.

Результаты

Листинг 7.2.Запуск сценария ftpget

$ ftpget ftp://ftp.ncftp.com/unixstuff/q2getty.tar.gz

ftpget: Downloading q2getty.tar.gz from server ftp.ncftp.com

-rw-r-r-··1 taylor··staff··4817 Aug 14 1998 q2getty.tar.gz

Некоторые версии FTP более многословны, чем другие. Кроме того, нередки случаи несоответствия реализаций протокола на стороне клиента и на стороне сервера. В подобных ситуациях такие «многословные» программы FTP иногда выводят пугающие сообщения об ошибках, к примеру Unimplemented command («Нереализованная команда»). Вы можете без опаски игнорировать их. Например, в листинге 7.3 показан вывод того же сценария, запущенного в OS X.

Листинг 7.3.Запуск сценария ftpget в OS X

$ ftpget ftp://ftp.ncftp.com/ncftp/ncftp-3.1.5-src.tar.bz2

../Scripts.new/053-ftpget.sh: Downloading q2getty.tar.gz from server ftp.

ncftp.com

Connected to ncftp.com.

220 ncftpd.com NcFTPd Server (licensed copy) ready.

331 Guest login ok, send your complete e-mail address as password.

230-You are user #2 of 16 simultaneous users allowed.

230-

230 Logged in anonymously.

Remote system type is UNIX.

Using binary mode to transfer files.

local: q2getty.tar.gz remote: unixstuff/q2getty.tar.gz

227 Entering Passive Mode (209,197,102,38,194,11)

150 Data connection accepted from 97.124.161.251:57849; transfer starting for

q2getty.tar.gz (4817 bytes).

100 % |*******************************************************| 4817

67.41 KiB/s 00:00 ETA

226 Transfer completed.

4817 bytes received in 00:00 (63.28 KiB/s)

221 Goodbye.

-rw-r-r-··1 taylor··staff··4817 Aug 14··1998 q2getty.tar.gz

Если ваша версия FTP чересчур многословна и вы пользуетесь OS X, программу FTP можно сделать более сдержанной, добавив в ее вызов флаг −V (то есть заменить команду ftp −n командой ftp −nV).

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

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

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

ftp −np << EOF

open $server

user ftp $anonpass

cd $destdir

put "$filename"

quit

EOF

Для доступа к защищенной паролем учетной записи на сервере FTP можно добавить в сценарий запрос пароля в интерактивном режиме, отключив эхо-вывод перед инструкцией read, и включить его снова после ввода:

/bin/echo −n "Password for ${user}: "

stty −echo

read password

stty echo

echo ""

Однако самый грамотный способ организовать ввод пароля — позволить программе FTP самой предложить ввести его, что в нашем сценарии произойдет автоматически: если для доступа к указанной учетной записи потребуется пароль, программа FTP сама предложит сделать это.

№ 54. Извлечение адресов URL из веб-страницы

Простейшее применение lynx заключается в извлечении списка адресов URL, находящихся в данной веб-странице, что может пригодиться при поиске ссылок в Интернете. Выше мы говорили, что в этом издании книги предпочли уйти от lynx в сторону curl, но, как оказывается, lynx в сто раз удобнее для решения этой задачи (см. листинг 7.4), чем curl, потому что автоматически анализирует разметку HTML, тогда как curl вынуждает вас делать это вручную.

В вашей системе нет программы lynx? Большинство современных систем Unix снабжается диспетчерами пакетов, такими как yum в Red Hat, apt в Debian и brew в OS X (впрочем, brew не устанавливается по умолчанию), с помощью которых можно установить lynx. Если вы решите скомпилировать lynx самостоятельно или пожелаете загрузить скомпилированные двоичные файлы, вы найдете все необходимое по адресу: http://lynx.browser.org/.

Код

Листинг 7.4.Сценарий getlinks

#!/bin/bash

# getlinks — получая URL, возвращает все относительные и абсолютные ссылки.

#·· Принимает три параметра: −d генерирует первичные домены в каждой ссылке,

#·· −i выводит список только внутренних ссылок на сайт (то есть на другие

#·· страницы на том же сайте), и −x выводит список только внешних ссылок

#·· (в противоположность −i).

if [$# −eq 0]; then

··echo "Usage: $0 [-d|-i|-x] url" >&2

··echo "-d=domains only, −i=internal refs only, −x=external only" >&2

··exit 1

fi

if [$# −gt 1]; then

··case "$1" in

картинка 351····-d) lastcmd="cut −f— f3|sort|uniq"

········ shift

········;;

····-r) basedomain="http://$(echo $2 | cut −d/ −f3)/"

картинка 352········lastcmd="grep \"^$basedomain\"|sed \"s|$basedomain||g\"|sort|uniq"

········shift

········;;

····-a) basedomain="http://$(echo $2 | cut −d/ −f3)/"

картинка 353········lastcmd="grep −v \"^$basedomain\"|sort|uniq"

········shift

········;;

···· *) echo "$0: unknown option specified: $1" >&2

········exit 1

··esac

else

картинка 354··lastcmd="sort|uniq"

fi

lynx −dump "$1"|\

картинка 355··sed −n '/^References$/,$p'|\

··grep −E '[[: digit: ]]+\.'|\

··awk '{print $2}'|\

··cut −d\? -f1 |\

картинка 356··eval $lastcmd

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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