Чтение онлайн

ЖАНРЫ

Linux и UNIX: программирование в shell. Руководство разработчика
Шрифт:

Конструкция "документ здесь" может применяться при создании файла, выводе на экран списка файлов, сортировке списка файлов и при создании экранов.

25.1 Быстрый метод формирования файла

Ниже рассматривается быстрый метод формирования файла, содержащего некоторый текст:

$ cat >> myfile << NEWFILE

Введите какой-нибудь текст, а по завершении ввода в новой строке просто укажите слово NEWFILE. В результате образуется файл myfile, содержащий этот текст.

Если файл с указанным именем существует, то вводимое содержимое добавляется в исходный файл.

При использовании клавиши [Tab] следует учитывать, что более ранние версии

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

cat >> myfile << - NEWFILE

25.2. Скоростной способ вывода документа на печать

Предположим, что нужно создать и вывести на экран небольшой документ, содержащий сообщение. Необязательно использовать редактор vi; вместо этого можно применить метод, показанный в следующем примере. Если после ввода символов QUICKDOC нажать клавишу [Return], документ пересылается на принтер.

$ lpr << QUICKDOC

**** INVITATION**** The Star Trek convention ls in town next week. Be there.

Ticket prices: (please phone)

QUICKDOC

25.3. Автоматизация меню

Несмотря на то что конструкция "документ здесь" успешно применяется для создания экранов меню, ее можно также использовать при автоматизации навигации по пунктам меню. В этом случае пользователю не придется вручную выбирать определенные опции.

Существует сценарий по работе с меню базы данных, который отвечает за резервное копирование баз данных и выполнение административных задач. Меню базы данных применяется в течение дня для выполнения резервирования базы данных и выполнения других административных задач. Если же было принято решение о том, что каждую ночь создаются резервные копии всех баз данных с помощью утилиты cron, отпадает необходимость в создании другого сценария.

В данном случае используется конструкция "документ здесь", причем для навигации по меню применяется сценарий syb_backup, использующий поток ввода. Ниже показан поток вывода для сценария меню syb_backup.

Главный экран меню, в котором выбран пункт 2, имеет следующий вид.

1: Admin Tasks

2: Sybase Backups

3: Maintenance Tasks Selection > 2

Второй экран меню с выбранным пунктом 3 выглядит так:

1: Backup A Single Database

2: Backup Selected Databases

3: Backup All Databases Selection > 3

Третий экран меню при нажатии клавиши [Y];

1. dw_levels

2. dw_based

3. dw_aggs

Are You Sure You Wish To Backup [Y..N] : Y

Итак, как следует из экрана меню, для резервирования всех баз данных нужно ввести следующую информацию:

• Название меню сценария, syb_backup.

• Цифру 2.

• Цифру 3.

• Символ Y.

Ниже приводится сценарий, с помощью которого можно автоматически выделить резервные копии баз данных. При этом используется сценарий меню syb_backup:

$ pg auto.sybackup

#!/bin/sh

# задание пути

PATH=/usr/bin:/usr/sbin:/sybase/bin:$LOCALBIN

export PATH

#присваивается значение переменной

DSQUERY=COMET; export DSQUERY

устанавливается значение TERM с последующей инициализацией

TERM=vt220; export TERM

tput -T vt220 init

# журнальный файл для всего потока вывода

log_f=/logs/sql.backup.log

>$1og_f

# ниже приводится код, выполняющий всю эту работу!

/usr/local/sybin/syb_backup >> $log_f 2>&1 << MAYDAY

2

3 Y MAYDAY

chown sybase $1og_f

Далее приводится конструкция фактического перенаправления, которая выполняет все необходимые действия:

usr/local/sybin/syb_backup >> $log_f 2>&1 << MAYDAY

2

3

Y

MAYDAY

Изучая часть кода, связанного с перенаправлением, можно заметить, что в сценарии syb_backup содержится полностью заданный путь; >>$1og_f>&1 означает, что весь поток вывода направляется в файл $1og_f, где находится переменная,

содержащая значение /logs/sql.backup.log. Такой подход довольно удобен, так как впоследствии можно захватить поток вывода, включая подробности резервного копирования и возможные ошибки приложения.

Конструкция "документ здесь" начинается со слова <<MAYDAY. Затем передаются коды, возникшие в результате выбора пунктов меню, выполняемого вручную для реализации резервного копирования. Конструкция "документ здесь" завершается также словом MAYDAY.

Вот и все. Необязательно переписывать сценарий, если его можно встроить в меню. Для автоматизации сценария примените конструкцию "документ здесь".

25.4. Автоматизация передачи файлов по протоколу ftp

Автоматизация передачи файлов по протоколу ftp является одним из широко распространенных методов применения конструкции "документ здесь". При использовании протокола ftp желательно предоставить пользователю несложный интерфейс для удобства работы. В следующем сценарии для создания подключения ftp применяется анонимное имя пользователя. Это специальное имя позволяет системе создавать защищенные учетные записи ftp, содержащие общедоступные каталоги (public). В общем случае каждый пользователь при установке подключения с использованием анонимного имени сможет только загружать файлы из данного общедоступного каталога. Но можно будет также выполнять выгрузку файлов.

Пароль можно выбрать произвольным образом, однако удобно воспользоваться названием хоста и локальным идентификатором пользователя или электронным, адресом.

Приведенный ниже сценарий запрашивает следующую информацию:

1. Адрес удаленного компьютера, с которым требуетця установить связь.

2. Тип передаваемых файлов: двоичный или ASCII.

3. Имя получаемого файла.

4. Локальный каталог, в котором размещается выбранный файл.

Когда пользователь вводит наименование удаленного компьютера, с которым устанавливается соединение, для удаленного хоста выполняется команда ttaceroute. Таким образом, можно быть уверенным в том, что соединение действительно установлено. Если же результат выполнения команды traceroute был неудачным, сценарий отображает повторный запрос.

Поделиться с друзьями: