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

We use cookies. Read the Privacy and Cookie Policy

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.

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