uucp-files(5)
ОС ДЕМОС. Форматы данных.

НАЗВАНИЕ
uucp-files - Описание управляющих файлов UUCP

СПИСОК ФАЙЛОВ
Файлы в /usr/lib/uucp (в скобках вариант BSD)

    Systems (L.sys)- список систем
    Devices (L-devices) - список линий и устройств
    Dialcodes (L-dialcodes) - список сокращений телефонов
    L-aliases - список псевдонимов
    L.cmds - список разрешенных команд
    USERFILE - список разрешенных каталогов, и список соответствия входных имен именам UUCP.
    L.shed - управление uusched,
    L.dialers - описание модемов для gdial(8)
    uucpname - имя локальной системы
Файлы в /usr/spool/uucp (в скобках вариант BSD)
    имя/C.xxxGnnnn - задания UUCP (C./имя/C.xxxxGnnnn)
    имя/F.xxxxxx - выходные файлы (F./имя/F.xxxxxx)
    имя/D.xxxxxx - принятые файлы (D./D.xxxxxx)
    .Xqueue/X.xxxGnnnn - принятые задания для UUXQT (X./X.xxxGnnnn)
    .Admin/LOGFILE (LOGFILE) - протокол работы
    .Admin/SYSLOG (SYSLOG) - статистика

ОПИСАНИЕ
Настройка системы UUCP осуществляется с помощью управляющих файлов. Они условно делятся на несколько частей:

  • описание удаленных систем и правил их вызова (Systems, Devices, L.dialers, и другие),
  • описание прав доступа и защита от неправильного входа в систему - L.cmds и USERFILE,
  • Описание локальной системы - L.shed, uucpname.

ЛОКАЛЬНОЕ ИМЯ СИСТЕМЫ
Имя вашей системы UUCP ищет в таком порядке:

  1. По значению переменной UUCPNAME (используется для отладки);
  2. в файле /usr/lib/uucp/uucpname,
  3. Если есть сеть TCP/IP, то по сетевому имени машины,
  4. Если имя не найдено, используется "unknown".
Заметим, что в Xenix файл /etc/systemid не используется.

ОБЩИЕ ПРАВИЛА
Все управляющие файлы пишутся по общим правилам. Строки, начинающиеся с '#', игнорируются (в них пишутся комментарии). Символ '\' в конце строки означает, что информация продожается на следующей строке. Пустые строки, как правило, игнорируются. Заготовки всех файлов содержатся в дистрибутиве (справочник UUAIDS) и содержат подробный комментарий.

Далее в именах файлов опущено начало "/usr/lib/uucp".

ФАЙЛ Systems
Файл /usr/lib/uucp/Systems (L.sys) описывает ВСЕ известные системе UUCP имена. Каждая строка в нем содержит следующие поля, разделенные пробелами:

  1. имя системы,
  2. время вызова [/приоритет][;Recall_time]
  3. тип устройства[,параметры-протокола]
  4. класс и скорость[,нужные атрибуты]
  5. Адрес (телефон) и атрибуты вызова,
  6. Алгоритм входа в удаленную систему
  7. -- // -
Поля 3-6 могут отсутствовать, если система никогда не вызывается.

Файл Systems используется для проверки, известна ли машина системе UUCP, и для исходящих вызовов других машин. Подробное описание и примеры приведены ниже.

ФАЙЛ USERFILE
Этот файл описывает права доступа разных машин к тем или иным справочникам, а также их право на выполнение команд того или иного класса (см. ниже L.cmds), и соответствие между именем входа (login-name) и именем машины. Строки в нем имеют формат:


 login-name,uucp-name [-Xкласс] [список_справочников]

где пара login-name и uucp-name определяет допустимость появления машины 'uucp-name' под именем 'login-name', 'класс' определяет максимальный класс разрешенных команд, 'список_справочников' определяет те справочники, доступ к которым разрешен машине 'uucp-name'.

Кроме того, в этом файле могут быть такие записи:


 ,local список_справочников

определяет список справочников, которые могут указываться в команде 'uucp' выполняемой любым локальным пользователем,

 login-name,local список_справочников

определяет, какие справочники может читать/писать локальный пользователь 'login-name' с помошью UUCP,

 any, список_справочников

определяет права произвольной машины (по умолчанию).

ФАЙЛЫ Dialcodes и L.aliases
Файл 'Dialcodes' (L-dialcodes в варианте BSD) содержит символьные обозначения номеров телефонов, например:


 MOSCOW 8=812

Файл 'L.aliases' содержит описание псевдонимов, что позволяет вместо одной UUCP машины ссылаться на другую. Например:


 demos fuug

означает, что все, что предназначено для 'fuug', надо отправлять на demos. (Пример взят с kiae!, на котором иностранные письма маршрутизировались на 'fuug', но, так как с 'fuug' работал 'demos', реально посылались на 'demos').

uustartup
Это программа, которая вызывается после успешного соединения c удаленной машиной, с единственным аргументом - именем этой машины. Она пишется администратором системы UUCP в случае, если необходимо сбросить какие то буфера (например, batchmail). Например, на 'kiae!' эта программа на 'csh' имеет вид:


 #! /bin/csh -f

 if ( $1 == demos ) then

   batchmail -f fuug

 endif

 batchmail -f $1

ОПИСАНИЕ МАШИНЫ, ВЫЗЫВАЮЩЕЙ ЛОКАЛЬНУЮ
Для того, чтобы другая система могла общаться с вашим UUCP, вызывая его по телефону, прямой линии или TCP/IP, она должна быть описана в файлах "Systems" (L.sys) и "USERFILE".

Прежде всего, для машины 'uucp-name' заводится имя пользователя, пароль, а в качестве shell-a устанавливается /usr/lib/uucp/uucico. Например, в /etc/passwd соответствующая запись может иметь вид:


 uualex:xcsSGAKWYFG:5:5:alex.kiae.su:/usr/spool/uucp:/usr/lib/uucp/uucico

Машина 'имя' заводится в /usr/lib/uucp/Systems (L.sys). Формат описания:

 имя incoming

В /usr/lib/uucp/USERFILE пишется строка:

 login-name,имя [-Xкласс] список_справочников

Если параметр -X. опущен, считается, что данная система может выполнять команды класс '0'.

Если файл L.cmds уже заведен ранее, и содержит описание всех необходимых команд, то на этом заведение машины 'имя' кончается.

ОПИСАНИЕ УСТРОЙСТВ ВЫЗОВА
Если ваша система должна вызвывать другие машины сама, то прежде всего необходимо описать все устройства, которые используются для вызова. В случае TCP/IP такое описание не требуется, терминальные линии же описывают в файле /usr/lib/uucp/Devices (L-devices). Каждая запись этого файла имет вид:


 Caller Line Useful Class Dialer [Chat ...]

где
Caller
Тип программы вызова. ACU - линия, подключенная к модему, DIR - линия подключена напрямую. (На самом деле тип определяется первыми тремя символами, а остальные просто сравниваются с третьим полем в файле Systems) За ним через запятую может следовать приписка - список допустимых протоколов, например: ACU,gf.
Line
Имя устройства (без начального '/dev/'), например, 'tty01'. В Xenix-е описывают линию с модемным контролем (tty1A, ...).
Useful
Это поле не используется в данной версии системы. Обычно там ставится '-'.
Class
[Класс]Скорость_линии[,Допустиме_атрибуты]. 'Класс' - это любой символьный (без цифр) префикс, означающий тот или иной класс телефона (внутренний, городской, Искра-2, ...), он сравнивается с классом, указанным в поле класса файла Systems. Скорость обозначает ту скорость, на которой нужно обращаться к модему, она сравнивается со скоростью, указанной в поле 'Класс' файла Systems. 'Атрибуты' представляют собой набор букв и цифр (отделенный запятой). Для того, чтобы система воспользовалась данной линией, все атрибуты, указанные в соответствующем поле файла Systems, должны иметься в списке атрибутов терминальной линии.
Dialer
Это или имя модема, описанное далее в файле L.dialers (в этом случае для набора номера UUCP вызывает программу 'gdial'), либо начинаюшееся со '/' имя программы-диалера. Программа вызывается с параметрами:

    Dialer [-xN] номер:опции /dev/линия скорость

и должна возвращать стандартные коды ответа, описанные в диалере 'gdial'.
Chat
Оставшиеся аргументы передаются диалеру, причем если аргумент один, то он подставляется в поле номера телефона (предварительно T заменяется на номер из файла Systems). Если аргументов больше одного, то они трактуются как аргументы вызова диалера (вместо стандартных).

Атрибуты модема трактуются произвольно, но рекомендуется использовать хотя бы следующие:

  • O - выходная линия (по которой можно звонить),
  • I - по линии можно звонить на межгород,
  • F - по линии можно звонить за рубеж,
  • v - модем имеет V42bis
  • m - модем имеет MNP протокол,
  • 9 - модем имеет протокол V32,
  • p - модем имеет протокол PEP.
Примеры описаний:

 DIR     tty31   -  19200        vax

 ACU     tty01   -  IAE9600,Om   Disco2400-MNP

ОПИСАНИЕ ВЫЗЫВАЕМОЙ МАШИНЫ
Машина, которую надо вызывать, описывается в файле Systems. В этом файле должна быть одна или несколько строк, описывающих алгоритм и правила вызова. Строки имеют формат:


 Имя  Время  Тип_вызова  Класс_устройства  Адрес_машины

Send Expect ...

Имя
Имя вызываемой машины. Если в файле несколько строк с одним именем, они просматриваются (и выполняется попытка вызова) последовательно до тех пор, пока не кончится файл Systems или связь не установится.
Время
Допустимое время вызова. В этом же поле записывается приоритет (Grade) и максимальное время запрета связи после сбоя. Время может иметь вид:
  • Never - система никогда не вызывается,
  • ДниЧасы - в указанные дни вызов в указанные чаcы,
Допустимые дни:
  • Any - вызов в любое время
  • Su Mo Tu We Th Fr Sa - вызов в указанные дни недели (воскресенье - суббота),
  • Wk - рабочий день недели,
Часы записываются в виде ЧасовМинут-ЧасовМинут.
Примеры записи времени:

     Any

     SaSu0100-0700

     MoTuWeThFrSa1900-0700

(Заметим, что естественным образом пишется диапазон времени, переходящий через 0). Можно повторять запись, разделяя ее вертикальной чертой, например:

     MoTuWeThFrSa1900-0700|SaSu0000-2400

В этом же поле можно указать максимальный приоритет (Grade) выполняемых в указанное время заданий - /Grade. Кроме того, через ',' или ';' можно указать максимальное время запрета на повторный вызов. Дело в том, что по умолчанию, послу сбоя соединения система устанавливает временный запрет на связь с удаленной машиной, чтобы предотвратить пустую трату телефонного времени в случае, если сбой вызван какой то неустранимой причиной (например, та машина стоит). Это время растет экспоненциально от сбоя к сбою - 5 минут, 10 минут, 20 минут, и так далее. Если вы предполагаете, что сбои вызываются случайными причинами, или вам нужно во что бы то ни было устанавливать связь, имеет смысл ограничить этот интервал сверху. Записывается это так (например):

     Any;5

     SaSu0000-2400;50

В этом случае время запрета не будет больше указанного в строке.

Итак, допустим, вы хотите вызывать машину 'kiae' в любой день недели, причем в рабочие дни в дневное время запретить передачу и прием новостей, которые идут (допустим) с приоритетом 'd', и не допускаете, что машина в kiae может простаивать больше 15 минут. Тогда вы делаете такую запись в поле времени:


     Wk0900-1800/Z;15|Any/z;15

Наиболее распространена запись вида:

     Any или Any;15

Тип
Это поле описывает программу, которая используется для вызова. Тут же указываются локальные и удаленные протоколы и их параметры настройки. Основные типы связи:

TCP - вызов по TCP/IP. В этом случае в поле КЛАСС записывается номер порта сервера UUCP (обычно 'uucp' или '540'), в поле адреса адрес машины в TCP/IP, например:


 kiae Any TCP uucp  relcom.kiae.su  login:  имя

word: пароль

DIR - вызов по постоянно включенной линии. В этом случае в поле адреса пишется имя устройствва (без /dev/), на которое включена эта линия (оно должно быть описано в Devices как 'direct'):

 kiae Any;5 DIR 9600 tty24 .......

ACU - вызов через модем. В этом случае в поле адреса пишется номер телефона и атрибуты настройки модема. Например:

 kiae Any;15 ACU 9600,Om 9469994:mnp ........

В этом же поле (тип программы вызова) можно указывать протокол работы и параметры локального и удаленного протоколов. Протоколы отделяются от типа запятой, удаленные протоколы пишутся после '/'. Примеры:
  • ACU,f - работать по 'f' протоколу
  • ACU,g(3,128) - установить окно 3 и пакет 128 на прием, работая по 'g' протоколу,
  • ACU,g(3,256)/(5,128) - установить на своей машине (на прием) окно 3 и пакет 256, на удаленной машине запросить окно 5 и пакет 128 (при передаче на нее).
Аналогично протокол можно указывать и в случае TCP или DIR.

(На самом деле, программа вызова определяется по первым 3-м буквам, так что можно писать, как и в HDB UUCP: ACUKIAE. Полное название ищется в Devices при определении линии для вызова).

Класс_устройства
В случае TCP тут пишется, как правило, слова 'uucp' или номер порта 540. В случае ACU или DIR в этом поле указываются:

 Категория линии (префикс, состоящий из букв),

 Скорость линии (может быть '*'),

 Требуемые атрибуты линии (модема)

Категория линии определяет те строки Devices, которые будут рассматриваться - их категории должны совпадать. Скорости также должны совпадать, за исключением случая, когда в Systems стоит '*' - тогда на самой линии может быть любая скорость. Атрибуты (отделяются запятой) сравниваются с атрибутами линий в Devices - все атрибуты из Systems должны иметься в описании линии в Devices. Примеры:

WCKS19200,p - линия сети ВЦКС, скорость порта 19200, требуется протокол PEP.

На самом деле все эти характеристики условны, а система просто ищет в Devices строку, в которой в поле Класс написано:


 WCKS19200,[что-угодно]p[что-угодно]

Еще пример - описание системы fuug на машине kiae:

 fuug Any;5 ACU,g(7,64) 19200,Fp ....

А в файле Devices принято обозначать атрибутом 'F' линии, по которым можно звонить за рубеж, а 'p' - модемы с протоколом 'PEP'. Например:

 ACU     tty18   -  19200,FOIpv9m   T2500

Адрес
В случае ACU это - номер телефона, за которым могут через ':' идти параметры настройки настройки модема. Это поле просто передается диалеру. Универсальный диалер 'gdial' (работающий через L.dialers) понимает параметры модема согласно описанию модемов. В системе принято использовать параметры (в принципе это просто соглашение об использовании L.dialers):

 :mnp - MNP

 :comp - компрессия

 :v42  - V42bis

 :v32  - V32

 :pep  - протокол PEP

 :xon  - использование XON/XOFF

Кроме того, символ '=' означает 'ждать гудка', а '-' - пауза. Перед номером может идти символьный префикс - код города, который заменяется на номер телефона в соответствии с файлом 'Dialcodes'. В случае TCP в поле адреса пишется адрес машины в TCP/IP, а в случае DIR сокращенное (без '/dev/') имя устройства.
'Expect/Send'
Остальная часть строки описывает алгоритм входа в удаленную систему - пары строк 'Send' (что надо сказать удаленной системе) и Expect (что она должна ответить). Первым идет поле 'Expect'. По сути в ней описывается то, что делает пользователь для входа в удаленную систему, например:
  • Ждать слова 'login:'
  • если не дождался, нажать 'Enter'
  • на 'login:' ввести 'uualex', затем ждать 'Password:',
  • Получив 'Password:' , ввести пароль.
Аналогично выглядит и запись в Systems. В полях 'Send' описывается посылаемый текст, а также можно указывать смену четности, посылку 'Break', установку времени ожидания и многое другое. В полях 'Expect' можно указывать альтернативные пары 'Send/Expect'. Точно все выглядит так:
'Send'
В поле 'Send' записывается произвольный текст, который нужно послать. Особым образом понимаются пары символов '\C', кроме того, существуют специальные значения поля Send, которые трактуются специальным образом:
    BREAK - послать в линию 'Break',
    PAUSEN - пауза в N секунд,
    P_ZERO - установить нулевой бит четности,
    P_EVAN - установить четность в 'EVEN',
    P_ODD - установить четность в 'ODD',
    P_ONE - установить бит четности в 1
По умолчанию стоит 'P_ZERO'. Все эти слова не вызывают только то действие, которое описывают, и не посылают в линию никаких символов.

Имеется несколько 'Escape' последовательностей, понимаемых особым образом:

    \c - не выдавать CR (символ 015) в конце строки,
    \r - символ 015 (CR),
    \n - символ 012 (NL)
    \d - пауза в 2 секунды,
    \s - пробел
    \bN - посылать 'BREAK' N секунд,
    \NNN - символ с кодом NNN.
Кроме того, "" означает 'послать CR'.

Поле 'Expect' имеет один из двух форматов:


 Expect

 Expect-Send1-Expect1...

Во втором случае, если не пришел ответ 'Expect', посылается 'Send1' и ожидается 'Expect1', и так далее.

В строке 'Expect' могут также указываться

  • \NNN - означает символ 0NNN,
  • \b - пробел,
  • ~NNN - установить время ожидания в 'NNN' секунд, данная запись должна быть в самом конце 'Expect'.
  • "" - если это отдельное поле 'Expect', то означает 'Ничего не ждать'.
Примеры:
Systems:

 kiae  Any;15  ACU  2400  9469984  ogin:--ogin:

uualex assword:-uualex-asswprd: uuXYZ

Строка в Devices:

 ACU tty1A - 9600 SmartOne

Это был простейший вариант. Вот более сложный:
Systems:

 kiae Any;15  ACU,g(3,256)/g(4,128)  ISKRA*,Im2

MOSCOW9469994:mnp:long \

 ""  P_ZERO   ogin:~6--ogin:-BREAK-ogin:--ogin:

\d\025uualex \

 assword:~65-\d\025uualex\r\c-assword:

 25XYZpasswd 7

Devices:

 ACU acu00 - ISKRA19200,IOmv921 Case4696r



Dialcodes



 MOSCOW 8=852
В последнем случае в классах устройств буквы трактуются как:
I - межгород, O - выходная, m - MNP, v V42bis, 9 - V32, 2 - V22bis, 1 - V22. Но это личное дело администратора системы.

ТОНКОСТИ НАСТРОЙКИ
При описании вызываемой машины необходимо предусматривать следующее:

  1. Если вызов идет по межгороду, то значительно увеличивается время ожидания соединения и уменьшается вероятность соединения. Для улучшения соединения обычно увеличивают время ожидания в описании модема (можно даже завести для такого соединения отдельную строку в Devices и отдельное описание диалера), увеличивают время ожидания самого модема (переменная S7, обычно устанавливается по опции 'long') и записывают несколько копий строки с описанием в файле 'Systems'.
  2. После соединения 'login:' выдается удаленной стороной далеко не всегда. Иногда нужно выдать один (или несколько) символов 'CR' (клавиша 'Enter'), чтобы получить 'login:'.
  3. В некоторых системах выдается 'Login:' и 'Password:', в других - 'login:' и 'password:'. Поэтому ждут обычно не 'login:', а 'ogin:', не обращая внимания на первый символ.
  4. Бывает полезно стереть буфер терминального драйвера перед выдачей имени или пароля, в этом случае пишется что то вроде '\025uualex

ПРОВЕРКА
Для проверки вызова uucico вызывается в режиме отладки. Полезно бывает проверить правильность 'Systems', взяв какой либо 'kermit' и проверив все 'Expect/Send', посылая их вручную. Причиной ошибки может быть неверная четность посылаемого текста, или неверный символ стирания буфера (символ '025' во многих System-V не стирает буфер при вводе имени или пароля).

ОПИСАНИЕ ДОПУСТИМЫХ КОМАНД И СПРАВОЧНИКОВ
Следующий этап описания любой системы - это обеспечение необходимых ограничений для нее. Для этого служат файлы USERFILE и L.cmds.

Файл L.cmds содержит список команд, которые могут выполнять удаленные машины, с [возможно] указанием, к какому классу UUCP должны принадлежать машина, чтобы выполнять данную команду, описание того, нужно ли посылать ответ и в каких случаях, и описание пути поиска команд (PATH). Файл может содержать следующие строки:

Описание пути поиска команд: PATH=путь_поиска_команд, например:


 PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin

Описание того класса, к которому относятся следующие команды: X=класс, где класс - число от 0 до 9,

Описание команды в формате: команда[,[Error][No]], например:


 rmail,Error

 rbmail,No

 rnews,Error

 rsend

По умолчанию uux шлет уведомление о выполнении команд.Суффикс 'No' блокирует это послание во всех случаях, суффикс 'Error' - оставляет только в случае ошибки.

Пример файла:


 PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin

 rmail,Error

 rbmail,No

 X=2

 rnews,Error

 X=4

 rsend

 X=9

 who

 lpr

Второй файл, в котором надо описывать права доступа USERFILE. Формат его упоминался в выше. В нем указывается:


 login-name,uucp-name [-Xкласс] список_справочников

При выполнении команды проверяется, что класс этой команды не выше класса данной uucp машины. В приведенном выше примере для выполнения команды 'lpr' машиной 'alex' в файле должно стоять что то вроде:


 uualex,alex -X9 /usr/spool/uucppublic

ОПИСАНИЕ МОДЕМОВ (L.dialers)
Как правило, для работы с модемами используется внешний диалер (в системе есть встроенные имена 'hayes', 'hayes2400' - для вызова по правилам работы с совместимыми с Hayes модемами, но они совершенно не учитывают специфику конкретного модема). Если в описании Devices указан тип модема, отличный от известного 'uucico' (то есть от 'hayes' или 'hayes2400'), то вызывается универсальный диалер, который берет описание модема из файла '/usr/lib/uucp/L.dialers'. Параметры вызова этого диалера описана в 'gdial(8)'.

В файле L.dialers описано все, что нужно для

  • инициализации модема (ключ '-z' команды 'gdial'),
  • соединения с указанным номером,
  • установки модема в режим приема звонков (ключ '-h').
Файл L.dialers состоит из ряда описаний модемов. Каждое описание начинается с указания:

 Modem=Тип_модема

и кончается строкой, состоящей из точки:

Строки, начинающиеся с #, игнорируются (еще до обработки символа '').

Параметры модема описываются записями вида:


 Имя=Значение

или

 Имя=Значение Значение ...

В первом случае на одной строке могут быть несколько описаний, во втором - список значений, разделенных пробелами, занимает весь остаток строки, и, если нуобходимо, может быть продлен на следующие строки, если в конце строки стоит '\'. При этом символ \ не рассматривается как пробел. Можно использовать одиночные или двойные кавычки, так, что, например, Start" '01'" представляет собой одно слово. Имена переменных могут сокращаться до 2-х букв, если это обеспечивает однозначное распознавание.

Список переменных (* - обязательно описание, ! - значение - массив)
Modem*имя модема в системе
Use*имя модема - аналога, его описание
Hang*!Как оборвать связь (в формате Send Expect, см. ниже)
Save!Инициализация ПЗУ модема (Send Expect)
Call*!Вызов (Send Expect)
Host!Перевод в режим ожидания звонка (Send Expect)
Reset!Сброс модема при каких либо трудностях (Send Expect)
ValidСимволы, допустимые в номере

Ответы модема:

Connect !Возможные ответы модема при соединении
Busy!Ответы, означающие занятость телефона
Nocar!Ответы - нет несущей
Error!Ответы - ошибка команды модема
RingОтвет - опознан входящий звонок
RringОтвет - опознан звонок на удаленном модеме
Baud!Список допустимых скоростей работы с модемом (не путать со скоростью связи)
CharsСтрока замены символов в номере вида:
-<Символ задержки>=<Символ ожидания гудка> (например, -,=W)
TconnВремя (в секундах), отводимое на соединение
TrringВремя, отводимое на соединение после приема первого удаленного звонка (Rring)
TmodemВремя на ожидание ответа после команды модема
TdigitВремя, добавляемое при вызове на каждую цифру
TpauseВремя, добавляемое на паузу (символ '-' в номере)
TwaitВремя, добавляемое на ожидание гудка

Далее следует описание опций. Опции включаются в номер в L.sys через двоеточие и вызывают дополнительную настройку модема при выполнении его команд (см. O в описании Send ниже).


 Options=название подставить  название подставить ...

где название - название опции (mnp, ...) подставить - команды модема, которые подставляются вместо O в строке, посылаемой на модем (!!! в строке 'подставить' обратный слеш не удваивается, в отличие от 'Send') Имена опций произвольны, но есть рекомендованные стандартные имена (в зависимости от категории Acu в L.devices):

    Все - puls, tone, - импульсный или тоновый набор
    ans1, ans2, ans3 - отвечать на 1-й, 2-й, 3-й звонок
    norb - выключить распознавание BUSY и других сигналов M (модем с МНП)
    mnp, nr - МНП или без МНП (по умолчанию д. быть режим автоматического распознавания
    dir - прозначный режим
    comp, nocomp - включение / выключение компрессии
    v42 - режим v42 (mnp его выключает)
    xon, rts, noflc - управление контролем передачи
Любой модем - скорости связи:

 v32, b2400, b1200, b300, bany

Переменные в формате Send / Expect описывают команды модему и ожидаемые ответы в форме:


 Послать Ждать Послать Ждать ...

Причем Ждать может иметь форму

 Ждать-Послать1-Ждать1...

аналогично файлу Systems в описании систем UUCP. (Если Ждать не получен, послать строку Послать1 и ждать ответа Ждать1, и так далее. Правила записи строк Послать и Ждать:

Ждать если отсутствует последнее поле Ждать в строке "Call", то система ждет ответа в соответствии с переменными Conn, Busy, Nocar и т.д.

если строка Ждать начинается с пробела (" *", например), то ответ ищется, не дожидаясь получения символа LF (перевод строки) с модема. Пробел при этом пропускается. Иначе сначала система ждет получения символа перевода строки, а затем уже сравнивает полученную строку с возможными ответами. Пробелы в ответах модема игнорируются,

Послать в строке "Послать" распознаются следующие специальные последовательности:

    \\ - заменяется на \
    \r - заменяется на символ возврата каретки
    \n - заменяется на символ перевода строки
    \c - означает - не добавлять 7 в конец Send (что делается по умолчанию).
    \s - заменяется на пробел
    \d - задержка на 2 секунды
    \BN - послать BREAK в линию на N секунд (B эквивалентно B3)
    \DN - снять DTR на N секунд (D эквивалентно D2)
    \wN - установит время ожидания очередного ответа N секунд
    \T - подставить сюда номер телефона (при вызове)
    \O - подставить сюда строку, сгенерированную указанными в вызове опциями
    \nnn - символ с кодом nnn
Маленькие правила
    В строке Send символ \\ удваивается
    При описании опций и в Expect \ не удваивается
    Чтобы написать \ в конце строки, его заменяют на '\'.

Для описания нового модема в этом файле рекомендуется найти описание похжего модема, сослаться на него и описать только те характеристики, которые отличаются.

СТАТИСТИКА И ЧИСТКА КАТАЛОГОВ
Система UUCP пишет несколько файлов статистики и протоколов работы.

Протокол
Протокол работы системы пишется в '/usr/spool/uucp/.Admin/LOGFILE' (в BSD варианте - в /usr/spool/uucp/LOGFILE). Можно сгенерировать систему так, чтобы статистика по каждой машине и от каждой команды системы писалась отдельно, но обычно это не делается для упрощения просмотра протоколов. В протокол пишутся:

  • имя пользователя, под которым работает программа,
  • имя машины, к которой относится операция,
  • дата, время и номер процесса,
  • текст сообщения.
например:

 alex kiae1 (3/20-23:19-15009) XQT QUE'D (who)

СТАСТИСТИКА UUCP
При передаче и приеме файлов UUCP пишет статистику в файл '/usr/spool/uucp/.Admin/SYSLOG' (/usr/spool/uucp/SYSLOG в варианте BSD). В каждой строке записываются:


 имя пользователя,

 имя машины,

 (дата, время, номер процесса),

 (точное время )

 операция (send/received data),

 длина файла

 время передачи

 возможно, число повторов по таймеру.

Эта статистика обрабатывается командой 'uurate', которая подсчитывает объемы и скорость передачи данных.

Пример записи:


 alex altserv (3/20-19:10) (701107844.15)  sent

data 1228800 bytes 2306.64 secs 45 retries

Протокол
При вызове UUCP в пассивном режиме (через 'login:'), если на удаленном конце включена отладка (-xN), uucico пишет отладочну/ информацию в файл '/usr/spool/uucp/.Audit/имя (/usr/spool/uucp/AUDIT/имя в варианте BSD). Каждый раз этот файл начинается заново. Рекомендуется стирать из этого справочника файлы, пролежавшие больше суток (что и делает uu.daily).

Ежедневно должна запускаться программа очистки и сбора статистики. Эта программа (как правило, /usr/lib/uucp/uu.daily) уничтожает задания и файлы, которые не смогли выполниться за указанное в ней время, а затем, если имеется справочник '/usr/spool/uucp/.Old' (/usr/spool/uucp/OLD в варианте BSD) собирает на помесячной основе протокол и статистику работы, а если такого справочника нет, просто сохраняет последовательно статистику и протоколы за 7 последних дней. Подробнее она описана в uu-daily(8).

СМ. ТАКЖЕ
uudaily(8), gdial(8), uucico(8), uuxqt(8), "Замечания по реализации UUCP".