Сценарии
Сценарии - это последовательности некоторых действий T-Mail, описанные
на специальном языке сценариев. Эти описания хранятся в файлах сценариев,
которые представляют собой обычные текстовые файлы. Каждая инструкция в
файле сценария должна располагаться в отдельной строке, при этом начальные
и конечные пробелы игнорируются. В файлах сценариев можно использовать
комментарии, директивы DEFINE и номера задач так же, как и в основном файле
конфигурации t-mail.ctl . При интерпретации сценария T-Mail выполняет
инструкции в том порядке, в каком они расположены в файле сценария, если с
помощью языка описания сценариев не задано иное.
Командой на выполнение соответствующего файла сценария служит ключевое
слово Script. Сценарий может выполняться как и любое другое действие при
обработке Process, Process_Flag, Key, External, а также перед сеансом связи
(при задании Script в subst.lst ).
Если выполнение сценария вызывается из другого сценария, то после
завершения второго (вызванного) сценария управление обратно в первый
(инициировавший вызов) сценарий не передается.
Ниже перечислены инструкции, которые можно использовать в файле
сценария:
Timer время
Эта инструкция задает максимальную длительность выполнения
сценария по времени в секундах. По умолчанию максимальная
длительность выполнения сценария - 60 секунд. По истечении
заданного времени выполнение сценария прекращается.
Set переменная=значение
Эта инструкция устанавливает значение любой переменной из файла
t-mail.ctl . Первоначальное значение переменной будет восстановлено
как и в случае выполнения обычной процедуры Set ( events.ctl ):
после завершения сеанса связи (если сценарий выполнялся перед
сеансом связи), либо при любом перечтении файлов конфигурации.
Disconnect
Эта инструкция прерывает соединение.
Xmit строка
Эта инструкция передает строку в модем. Символы "|" в этой
строке будут заменены на символ "возврат каретки" (CR).
Delay время
Эта инструкция приостанавливает выполнение сценария на время,
указанное в параметре время (в секундах).
Exit
Эта инструкция вызывает завершение сценария. Если сценарий
выполнялся непосредственно перед сеансом связи, то после
завершения этого сценария T-Mail начинает сеанс связи.
* Exec команда
Эта инструкция выполняет внешнюю программу или другие действия.
Аналогично использованию Exec в файле events.ctl и в директивах
Process и Process_Flag ( t-mail.ctl ).
* Carrier
Эта инструкция анализирует наличие несущей (carrier). Результат
анализа может быть использован в последующей инструкции Goto.
* Baud скорость
Эта инструкция сравнивает скорость установленного соединения со
значением скорость. Результаты сравнения могут быть использованы
в последующей инструкции Goto.
* Address addr list
Эта инструкция сравнивает адрес вызываемой системы с addr list.
Результат сравнения может быть использован в последующей
инструкции Goto.
* Wait [timeout] строка
Эта инструкция ожидает поступления из модема строки символов,
заданных в параметре строка. Если параметр строка имеет в
конце символ "|", то принятая строка должна завершаться символом
"возврат каретки" (CR). Необязательный параметр timeout задает
время этого ожидания в секундах. Если за это время заданная строка
принята не будет, то ожидание завершается. Если же параметр
timeout не определен, то ожидание будет осуществляться до
завершения сценария по истечении времени, заданного в инструкции
Timeout.
:метка
Эта инструкция определяет метку в сценарии. В качестве метки может
быть использована любая текстовая строка без пробелов.
Goto метка#1 [метка#2]
Эта инструкция вызывает в порядке выполнения инструкций сценария
безусловный или условный переход на указанную метку.
Если в качестве параметра задана только метка#1, то выполняется
безусловный переход к выполнению инструкции, следующей за строкой
с меткой метка#1.
Если в качестве параметров заданы две метки, то выполняется
переход к первой или второй метке в зависимости от того, как
завершилась предыдущая инструкция (из числа инструкций, отмеченных
знаком "*"), как показано ниже в таблице:
Предыдущая Переход к метке Переход к метке
инструкция метка#1 метка#2
---------------------------------------------------------------------
Carrier если несущая присутствует если несущая отсутствует
Wait если указанная строка если до завершения времени
была принята ожидания указанная строка
принята не была
Exec если код завершения если код завершения
(errorlevel) равен 0 (errorlevel) не равен 0
Address если адрес вызываемой если адрес вызываемой
системы входит в системы не входит в
заданный список адресов заданный список адресов
Baud если скорость соединения если скорость соединения
больше или равна заданной меньше заданной
Пример (example.scr):
~~~~~~~~~~~~~~~~~~~~~
------------------------------------------------------------------------
; Test script
Timer 45
Delay 2
Baud 14400 ; check connection baudrate
Goto _Start _Cancel2 ; continue if = 14400
:_Start
Wait 10 login
Goto _Login _Cancel
:_Login
Xmit mylogin| ; send login
Wait 10 password
Goto _Passw _Cancel
:_Passw
Xmit mypassw| ; send password
Delay 3
Carrier
Goto _Smth _Cancel
:_Smth
Exec Create SEM32\test.t-m
Exec smth.exe
Set Files=c:\t-mail\files\tmp
Xmit telnet 123.456.789.101 ; establish telnet connection
Delay 2
:_Cancel
Exit
:_Cancel2
Disconnect
Exit
; End of script
-------------------------------------------------------------------------
В файлах сценариев можно использовать значения переменных окружения
DOS или OS/2. При этом имена переменных заключаются в символы "%". Кроме
того, могут быть использованы две специальные переменные с аналогичным
синтаксисом - %TASKNO% и %PLATFORM%. Переменные окружения с такими именами
будут проигнорированы. Вместо %TASKNO% будет подставлен номер задачи
T-Mail, который задается в командной строке ключом -N (см. главу 21 ).
Вместо %PLATFORM% будет подставлено наименование операционной системы:
"DOS","OS/2" или "NT". Так, если вы используете T-Mail для DOS (пусть даже
в окне OS/2) - подставится "DOS".
В сценариях, выполняемых непосредственно перед сеансами связи
(заданными в subst.lst ), возможно использование следующих инструкций Set,
задающих параметры протокола Zmodem для этого сеанса связи:
Set ZMinCPS_In - установка минимальной скорости приема файлов;
Set ZMinCPS_Out - установка минимальной скорости передачи файлов;
Set ZStartBlock - установка начального размера блока;
Set ZMaxBlock - установка максимального размера блока;
Set ZTimeout - установка размера таймаута.
После завершения сеанса связи будут восстановлены значения по
умолчанию. Подробнее о настройках параметров протокола Zmodem можно
прочитать в главах 7 и 30.
Пример (example2.scr):
~~~~~~~~~~~~~~~~~~~~~~
Set ZMinCPS_In=400
Set ZMinCPS_Out=200
Set ZStartBlock=4096
Set ZMaxBlock=8192
Set ZTimeout=20