25.3. Автоматизация меню
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.
Вот и все. Необязательно переписывать сценарий, если его можно встроить в меню. Для автоматизации сценария примените конструкцию "документ здесь".