В отличие от более простых программ передачи файлов, UUCP был разработан,
чтобы обрабатывать все передачи автоматически. Если только все установлено
правильно, ежедневное вмешательство администратора не требуется. Вся
необходимая информация сохраняется в паре файлов конфигурации, которые
постоянно находятся в каталоге /usr/lib/uucp.
Большинство этих файлов используется только при внешнем запросе снаружи.
Сказать, что конфигурация UUCP является тяжелой, было бы замалчиванием
фактов. Это, действительно, запутанная тема, и иногда краткий формат файлов
конфигурации не делает вещи проще (хотя формат Talyor читается очень просто
по сравнению с более старыми форматами в HDB или Version 2).
Чтобы дать Вам понять, как взаимодействуют все эти файлы, представим
наиболее важное и будем просматривать типовые записи этих файлов. Мы не
будем объяснять все подробно; более точные сведения даны в отдельных разделах
ниже. Если Вы хотите установить на Вашу машину UUCP, лучше всего начать с
типовых файлов и адаптировать их постепенно. Вы можете выбирать из
предложенного ниже набора примеров или того, что есть в Вашем дистрибутиве
Linux.
Все файлы, описанные в этом разделе хранятся в
/etc/uucp или в его подкаталогах. Некоторые дистрибутивы Linux содержат
код UUCP, который поддерживает HDB и Taylor конфигурации, и используют
различные подкаталоги для каждого набора файлов конфигурации. Обычно есть
файл README в каталоге
/usr/lib/uucp.
Чтобы UUCP работал правильно, эти файлы должны принадлежать пользователю
uucp. Некоторые из них содержат пароли и
номера телефона, и следовательно, должны иметь права доступа 600. Обратите
внимание, что хотя большинство команд UUCP должно иметь бит setuid на имя
uucp, Вы должны удостовериться, что программа
uuchk такого бита не имеет.
Иначе, пользователи будут способны отобразить пароли системы даже при том,
что файлы имеют режим доступа 600.
Центральный файл конфигурации UUCP называется
/etc/uucp/config. Он используется, чтобы установить общие параметры.
Наиболее важный из них (и теперь единственный), является именем UUCP Вашей
системы. Для нашей модельной сети Virtual Brewery использован
vstout в качестве шлюза UUCP:
# /etc/uucp/config - UUCP main configuration file
nodename vstout
Следующий важный файл конфигурации называется sys
. Он содержит всю системно-специфическую информацию об участках сети, с
которыми Вы связаны. Она включает имя участка и информацию относительно
связи, например, номера телефонов при использовании связи по модему. Типичный
скрипт для модемной связи с машиной pablo:
# /usr/lib/uucp/sys - name UUCP neighbors
# system: pablo
system pablo
time Any
phone 555-22112
port serial1
speed 38400
chat ogin: vstout ssword: lorca
Ключевое слово port задает порт, который
нужно использовать, time определяет время, в
которое система может вызываться. chat
описывает сценарии входа в систему: последовательность строк, которыми нужно
обменяться, чтобы uucico зарегистрировали на
pablo. Мы опишем сценарий входа позже.
Команда port не называет конкретный файл устройства,
например, /dev/cua1, она указывает на файл с
соответсвующими записями. Вы можете назначить любое походящее имя.
Файл port содержит информацию о связи
непосредственно. Для модемной связи он описывает специальный файл устройства,
который нужно использовать, скорость и тип оборудования, соединенного с
портом. Пример ниже описывает /dev/ttyS1 (он же
COM2), с которым соединен модем NakWell способный к передаче на скорости до
38400bps. Имя порта должно соответствовать имени, заданному в файле
sys.
# /etc/uucp/port - UUCP ports
# /dev/ttyS1 (COM2)
port serial1
type modem
device /dev/ttyS1
speed 38400
dialer nakwell
Информация, имеющая отношение к программам набора номера, cохраняется в
другом файле, называемом dial. Для каждого типа
программы набора номера он содержит последовательность команд, которые
требуются, чтобы вызвать удаленную машину по номеру телефона. Все это
называется chat script (сценарий дружеской системы). Пример для
вышеупомянутого NakWell мог бы выглядеть следующим образом:
# /etc/uucp/dial - per-dialer information
# NakWell modems
dialer nakwell
chat "" AT&F OK ATDT\T CONNECT
Строка, начинающаяся с chat, определяет
скрипт модема, который является последовательностью команд, посланных и
полученных от модема, чтобы инициализировать его и набрать желательный номер.
Последовательность \T будет заменена на номер
телефона uucico.
Чтобы в общем показать Вам, как uucico работает с
этими файлами конфигурации, предположим, что Вы дали команду:
$ uucico -s pablo
Первым делом uucico ищет
pablo в файле sys. Из строки в файле
sys для pablo она
видит, что должна использовать порт serial1
для установки соединения. Файл port сообщает
uucico, что serial1
является портом модема, и что есть подключенный модем NakWell.
uucico теперь ищет запись dial
, описывающую модем NakWell, и найдя первую такую запись, открывает
последовательный порт /dev/cua1 и выполняет
"дружескую беседу" программы набора номера. То есть, посылает
AT&F, ждет в ответ OK и
т.д. При столкновении со строкой \T, она
заменяет эту строку на номер телефона (555-22112), извлеченный из файла
sys.
После того, как соединение будет установлено (модем вернет
CONNECT), uucico возвращается к
файлу sys и выполняет дружескую беседу входа в
систему (login chat). В нашем примере она ждет приглашения
login: затем посылает имя пользователя
(vstout), ждет приглашения
password: и посылает пароль
(lorca).
После завершения авторизации удаленная система активизирует собственный
uucico. Две копии uucico
проводят фазу рукопожатия (handshake phase), описанную в предыдущем разделе.
Я прекрасно понимаю, что термины "фаза рукопожатия" и "дружеская беседа входа
в систему" звучат не очень удачно, но эквивалентная русская терминология в
этой области отсутствует.
Работа программ Linux слегка напоминает работу разведки: никто не должен
знать лишнего.
Прежде, чем Вы начинаете писать файлы конфигурации UUCP, Вы должны
выяснить некоторую необходимую информацию. Сначала Вы должны выяснить, к
какому последовательному порту присоединен модем. Обычно порты DOS COM1-COM4
отображаются на специальные файлы устройств с
/dev/ttyS0 по /dev/ttyS3.
Большинство дистрибутивов, например, Slackware, создают файл
/dev/modem как ссылку на соответствующий файл
устройства ttyS* и конфигурируют коммуникационные
программы kermit, seyon, чтобы
они использовали этот обобщенный файл. В этом случае Вы должны также
использовать /dev/modem в Вашей конфигурации UUCP.
Причина этого в том, что все программы используют так называемые файлы
блокировки (lock files), чтобы сообщить, когда
последовательный порт используется. Имена этих файлов блокировки являются
конкатенацией строки LCK.. и имени файла
устройства, например, LCK..ttyS1. Если программы
используют различные имена для одного устройства, они будут не в состоянии
распознавать чужие файлы блокировки. Как следствие, они прервут чужие сеансы
связи. Это не такое уж маловероятное событие, если Вы планируете, чтобы UUCP
использовал crontab. Подробности настройки
последовательных портов описаны в главе 4.
Затем Вы должны выяснить, с какой скоростью модем и Linux могут
связываться, и установить максимальную эффективную скорость передачи.
Эффективная скорость передачи может быть намного выше, чем физическая
скорость модема. Например, много модемов посылают и получают данные на
скорости 56 kbps. Использование протоколов сжатия (например, V.42bis)
позволяет установить фактическую скорость передачи более, чем в 100 kbps.
Конечно, если Вы хотите, чтобы UUCP cделал что-нибудь, Вам нужен номер
телефона системы для вызова. Также Вам нужен идентификатор для входа в
систему и, возможно, пароль для удаленной машины.
Также надо знать порядок входа в систему. Следует
ли нажать клавишу Enter перед появлением приглашения для входа? Что будет
отображено: login: или
user:? Это необходимо для создания сценария
дружеской беседы (chat script), который описывает
uucico как регистрироваться. Если у Вас возникают
затруднения, попробуйте вызывать систему программой терминала
kermit или minicom и записать
точно, что Вы делаете.
Как и при работе с сетями TCP/IP, Ваш компьютер должен иметь имя для
UUCP-сетей. Пока Вы просто хотите использовать UUCP для передачи файлов, это
имя не должно удовлетворять никаким стандартам. Единственое ограничение в
том, что имя не должно быть больше, чем 7 символов, чтобы не путать машину с
файловыми системами, которые накладывают ограничения на имя файла.
Однако, если Вы используете UUCP для почты или новостей, Вы должны
подумать о наличии имени, зарегистрированного в UUCP Mapping project. UUCP
Mapping project описан в главе 17. Даже если Вы делите
домен с кем-то, Вы можете получить официальное имя UUCP для своего участка
сети.
Часто люди выбирают свое UUCP имя так, чтобы соответствовать первому
компоненту имени домена. Предположим, что адрес Вашего домена
swim.twobirds.com, тогда имя главной машины
UUCP было бы swim. Обычно именно так и
бывает. Конечно, Вы можете также использовать любое UUCP имя.
Однако, не стоит использовать имя в адресе почты, пока Вы не
зарегистрировали его как Ваше официальное имя UUCP. В лучшем случае, почта на
незарегистрированную машину UUCP отправится в мусорную корзину. Если Вы
используете имя, уже присвоенное некоторому другому сайту, эта почта не будет
направлена ему и причинит администратору почты много проблем.
По умолчанию, набор программ UUCP использует
hostname как имя UUCP. Это имя обычно устанавливается
в скрипте rc и хранится в
/etc/hostname. Если ваше имя UUCP отлично от того,
что Вы устанавливаете в качестве имени своей машины, Вы должны использовать
опцию hostname в файле
config, чтобы сообщить
uucico о Вашем имени UUCP. Это будет
рассмотрено чуть позже.
Теперь мы вернемся к файлам конфигурации. Taylor UUCP получает
информацию из следующих файлов:
config
Это основной файл конфигурации. Вы можете определить Ваше имя UUCP
именно в нем.
sys
Описывает все участки сети, известные Вам. Для каждого участка он
определяет имя, в какое время вызывать его, какой номер набрать, какое
устройство использовать и как регистрироваться.
port
Описывает все доступные порты, вместе с обеспечиваемой ими скоростью и
программами соединения, которые нужно использовать.
dial
Описывает программы номера, используемые, чтобы установить телефонное
соединение.
dialcode
Содержит расширения для символьных номеров (dialcodes).
call
Содержит имя входа в систему и пароль, который нужно использовать при
вызове системы.
passwd
Содержит имена входов в систему и пароли, используемые при
регистрации. Этот файл используется только, когда
uucico делает собственную проверку пароля.
Файлы конфигурации Taylor состоят из строк, содержащих пары "ключевое
слово=значение". Знак hash (#) представляет собой комментарий, действующий до
конца строки. Чтобы использовать знак # просто так, Вы можете ввести его с
наклонной чертой влево \#.
Есть очень много опций, которые Вы можете изменять в этих файлах
конфигурации. С их помощью вы сможете сконфигурировать модемную связь UUCP.
Дополнительные разделы описывают изменения, необходимые, если Вы хотите
использовать UUCP поверх TCP/IP или поверх последовательного соединения.
Полное описание дается в Texinfo-документах, которые распространяются вместе
с исходным текстом Taylor UUCP.
Если Вы думаете, что сконфигурировали вашу систему UUCP полностью,
можете проверить конфигурацию, используя uuchk
(находится в /usr/lib/uucp).
uuchk читает ваши файлы конфигурации и печатает детализированный отчет о
значениях, используемых для каждой системы.
Скорее всего Вы вообще не будете использовать этот файл, чтобы описать
UUCP hostname. По умолчанию, UUCP использует имя, которое Вы устанавливаете
командой hostname, но вообще хорошая идея установить
имя UUCP явно. Типовой файл config показан ниже:
# /usr/lib/uucp/config - UUCP main configuration file
hostname vstout
Здесь можно задать еще ряд параметров, например, имя каталога для буфера.
Эти параметры будут рассмотрены позже в разделе “Анонимный UUCP.”
Файл sys описывает системы, о которых Ваша
машина знает. Запись представляется ключевым словом
system; затем до следующей директивы system
следуют детальные параметры, специфические для этой системы. Обычно,
сведения системы определяют номер телефона, login chat и другие подобные
параметры входа в систему.
Параметры перед самой первой записью system
задают значения по умолчанию для всех систем.
Наиболее важные элементы записи подробней описаны ниже.
Команда system задает имя удаленной системы. Вы
должны определить правильное имя удаленной системы, не псевдоним, потому
что uucico сравнит это значение с ответом системы.
Каждое имя системы может появляться только один раз. Если Вы хотите
использовать несколько наборов конфигураций для той же самой системы
(различные номера телефонов, которые uucico должен
пробовать по очереди), Вы можете определять альтернативы
(alternates). Альтернативы описаны ниже.
Если связь с удаленной системой достигается по телефонной линии, поле
phone определяет номер, который модем должен
набрать для связи. Он может содержать отдельные лексемы, интерпретируемые
процедурой набора uucico. Знак равенства (=) означает
ждать вторичный тон набора кода, тире (-) генерирует паузу в одну секунду.
Например, некоторые телефонные станции сбрасывают номер, если Вы не делаете
паузу между набором префиксного кода и номера телефона. Я не знаю
соответствующий термин для этого, но Вы знаете, что иногда на внутренней
телефонной станции Вы должны набрать 0 или 9, чтобы получить выход наружу.
Любая встроенная символьная строка может использоваться, чтобы скрыть
местную информацию (например, код области). Любая такая строка транслируется
с помощью файла dialcode. Предположим, что Вы
имеете следующий файл dialcode:
Опции port и
speed используются, чтобы выбрать устройство, используемое для вызова
удаленной системы и установки максимального быстродействия. Запись
system может использовать одну или обе опцию
сразу. При поиске подходящего устройства в файле port
могут быть выбраны только те порты, которые соответствуют имени порта
и (или) диапазону скоростей.
Вообще, при использовании опции speed есть
ограничение. Если в файле port определено только
одно устройство, uucico всегда использует его, так что
Вам остается только задать желаемую скорость. Если Вы имеете несколько
модемов, подключенных к Вашей системе, uucico пробует
все подходящие, пока не найдет неиспользуемый в данный момент. В этом случае
задавать порт не следует: если порт указан, никакого поиска вообще не будет.
Выше мы уже сталкивались со скриптом входа в систему (login chat script),
который сообщает uucico, как регистрироваться в
удаленной системе. Он состоит из списка лексем, определяя строки, ожидаемые и
посланные локальным процессом uucico. Проблема состоит
в том, чтобы заставить uucico ждать, пока удаленная
машина не пошлет приглашение входа в систему, затем послать имя входа в
систему, ждать, пока удаленная система пошлет приглашение на ввод пароля, и
посылать пароль. Ожидание и посылка строки чередуются.
uucico автоматически добавляет символ возврата
каретки (\r) к любой посылаемой строке.
Таким образом, простой скрипт похож на:
ogin: vstout ssword: catch22
Обратите внимание, что поля записи не содержат текста приглашений.
Удостоерьтесь, что вы войдете в систему , даже если система посылает
Login: вместо login:.
uucico также учитывает некоторые виды условного
выполнения, например, в случае, если getty удаленной
машины должен быть сброшен перед посылкой приглашения. Для этого Вы можете
присоединить под-дружескую (sub-chat) беседу к ожидающейся строке. Sub-chat
выполняется только, если основное соединение не удалось, то есть произошла
блокировка по времени. Один из способов использовать эту возможность состоит
в том, чтобы послать BREAK, если удаленная система не отображает приглашение
входа в систему. Следующий пример дает всесторонний скрипт дружеской беседы,
который должен работать и в случае, если Вы должны нажать Enter прежде, чем
войти в систему. Пустая строка ("") говорит UUCP
ничего не ждать и продолжать посылать следующую строку немедленно.
Имеется несколько специальных строк и ESC-символов, которые могут
включаться в скрипт:
""
Пустая строка сообщает, чтобы uucico не ждал
ничего, а продолжил посылать следующую.
\t
Табуляция.
\r
Перевод каретки.
\s
Пробел. Вы нуждаетесь в нем, чтобы включить пробел в строку
регистрации в скрипте.
\n
Перевод строки. В unix-системах понятия перевода (возврата) каретки и
перевода строки разделены в отличие от DOS/Windows-систем.
\\
Обратный слэш (\).
В посылаемой строке в дополнение к вышеупомянутым допустимы следующие
ESC-символы и последовательности:
EOT
Конец передачи (^D).
BREAK
Прерывание (Break).
\c
Возврат каретки в конце строки.
\d
Пауза в 1 секунду.
\E
Дает возможность эхо-проверки. Эхом (ECHO) называется возвращение
копии всей переданной информации для контроля. Этот режим требует, чтобы
uucico дождался ECHO всего, что он передает прежде,
чем сможет продолжать регистрацию. Это удобно, когда используется в скриптах
модема (с которыми мы столкнемся ниже). По умолчанию эхо выключено.
Иногда желательно иметь несколько описаний для входа в одну систему,
например, если система может быть доступна на различных модемных линиях.
С Taylor UUCP Вы можете делать это, определив так называемую
альтернативу (alternate).
Альтернативная строка сохраняет все установки из основной и определяет
только те значения, которые должны быть отменены в заданной по умолчанию или
добавлены к ней. Альтернатива смещена, относительно записи для системы,
строкой, содержащей ключевое слово altgrnave
alternate.
Чтобы использовать два номера телефона для pablo
, Вы должны изменить файл sys следующим
образом:
system pablo
phone 123-456
.. entries as above ...
alternate
phone 123-455
При вызове pablo,
uucico теперь сначала наберет 123-456 и, если ничего не получается,
попробует альтернативу. Альтернативный вход сохраняет все установки из
основного входа системы и изменяет только номер телефона.
Taylor UUCP реализует ряд способов, обеспечивающих ограничение времени
обращения к удаленной системе. Вам потребуется сделать это или из-за
ограничений, которые удаленная система накладывает на услуги в течение
рабочих часов или просто, чтобы избегать времени с высокими ценами за услуги.
Обратите внимание, что всегда возможно отменить ограничения времени
обращения, запустив uucico с опцией
–S или –f.
По умолчанию, Taylor UUCP отвергнет соединения в любое время, так что
Вы должны использовать некоторый вид спецификации времени в файле
sys. Если Вы не очень заботитесь об ограничении
времени обращения, Вы можете определить опцию time со
значением Any (любой) в файле
sys.
Самый простой способ ограничить время обращения, поле
time, которое сопровождается строкой,
состоящей из дня и подполя времени. День может быть комбинацией
Mo, Tu, We, Th, Fr, Sa, Su,
Any (любой), Never
(никогда) или Wk для выходных дней.
Время состоит из двух значений часов (в 24-часовом формате), отделяемых тире.
Они определяют диапазон, в течение которого обращения допустимы. Комбинация
этих лексем пишется без интервалов. Можно задать несколько интервалов,
разделяя их запятыми. Например, MoWe0300-0730, Fr1805-2000 допускает
обращение в понедельник и среду с 3 до 7.30 утра и в пятницу с 18.05 до
20.00. Когда поле time охватывает полночь, и
написано Mo1830-0600, это фактически означает понедельник, между полуночью и
6.00 утра и между 18.30 пополудни и полуночью понедельника.
Taylor UUCP также имеет специальные лексемы, которые можно использовать в
строке времени: NonPeak и
Night. Они эквивалентны
Any2300-0800,SaSu0800-1700 и
Any1800-0700,SaSu соответственно.
Команда time задает параметр, который описывает
время повтора в минутах. Когда попытка установить соединение не удалась,
uucico не допустит другой попытки вызвать удаленный
компьютер в течение некоторого интервала. По умолчанию, используется схема
backoff, где интервал повтора увеличивается с каждым последующим отказом.
Например, когда Вы определяете время повторения в 5 минут,
uucico откажется вызывать удаленную систему в течение
5-ти минут после последнего отказа.
Команда timegrade позволяет Вaм настраивать
приоритет буферизации. Допустим, что Вы имеете следующие команды
timegrade в записи системы:
timegrade N Wk1900-0700,SaSu
timegrade C Any
Это допускает задачи с приоритетом буферизации (spoolgrade) C и выше
(обычно почта имеет степень B или C), они будут приняты всякий раз, когда
соединение установлено, в то время, как новости (обычно ставятся в очередь со
степенью N) будут переданы только ночью и в выходные.
Точно так же, как команда time, команда
timegrade берет интервал повторения в минутах как
дополнительный третий параметр.
Однако есть и недостатки высоких приоритетов буферизации: опция
timegrade применяется только к тому, что посылает Ваша
система; удаленная система может передать все, что угодно. Вы можете
использовать опцию call-timegrade, чтобы явно
запросить послать только работы выше некоторой степени буферизации, но нет
никакой гарантии, что удаленная система так и поступит.
Аналогично, поле timegrade не
проверяется, когда удаленная система вызывает Вашу и любые работы,
поставленные в очередь для системы вызова будут ей посланы. Однако, удаленная
система может явно запрашивать Ваш uucico, чтобы
ограничить себя некоторым приоритетом задач.
Файл port сообщает uucico
о доступных портах. Это могут быть порты модема, другие типы последовательных
соединений и сокеты TCP.
Подобно файлу sys, port
состоит из отдельных кусков, начинающихся с ключевого слова
port, сопровождаемым именем порта. Это имя
может использоваться в описании порта в файле sys.
Нет потребности в уникальности имени; если существуют порты с одним и тем же
именем, uucico перепробует все по очереди, пока не
найдет тот, который в настоящее время не используется.
Команда port должна обязательно сопровождаться
именем, которое задает, какой порт описан. Допустимые типы:
modem, direct
для прямых соединений и tcp для сокетов TCP.
Если команда port отсутствует, по умолчанию тип порта
принимает значение modem.
В этом разделе я опишу лишь порты модема. Сокеты TCP и прямые соединения
будут обсуждаться позже.
Для модема и прямого соединения Вы должны определить файл для вызова
устройства напрямую. Обычно это имя специального файла устройства в каталоге
/dev (подобно /dev/ttyS1).
В случае использования модема, port также определяет, какой модем соединен
с портом. Различные типы модемов должны быть настроены по-разному.
Следовательно, Вы должны сообщить uucico, как
инициализировать Ваш модем и как соединяться с требуемым номером. Taylor UUCP
хранит описания всех программ набора номера в файле dial
. Чтобы использовать любую из них, Вы должны определить имя программы
набора номера, используя команду dialer.
Иногда Вам потребуется использовать модем различными способами в
зависимости от системы, которую Вы вызываете. Например, некоторые старые
модемы не понимают, когда быстрый модем пытается соединяться на скорости
56 kbps; они просто пропускают строку вместо того, чтобы вести переговоры на
скорости в 9600 bps. Если Вы знаете, что некоторые машины используют такой
"немой" модем, для вызова их Вы должны настраивать свой модем иначе. Для
этого Вам нужно добавить строку port в файл port,
которая определит другую программу набора номера. Теперь Вы можете задать
новому порту другое имя, типа serial1-slow, и
использовать директиву port в описании
системы в файле sys.
Лучший способ отличать порты состоит в том, чтобы отличать порты по
скоростям, которые они поддерживают. Например, два описания порта для
вышеупомянутого случая могут выглядеть следующим образом:
# NakWell modem; connect at high speed
port serial1 # port name
type modem # modem port
device /dev/ttyS1 # this is COM2
speed 115200 # supported speed
dialer nakwell # normal dialer
# NakWell modem; connect at low speed
port serial1 # port name
type modem # modem port
device /dev/ttyS1 # this is COM2
speed 9600 # supported speed
dialer nakwell-slow # don't attempt fast connect
Системная запись для машины drop получает
для использования порт serial1, но в случае
запроса на использование скорости 9,600 bps uucico
автоматически использует вторую запись порта. Все остальные сайты, которые
работают со скоростью 115,200 будут вызываться с использованием первой записи
port. По умолчанию используется первая запись с подходящей скоростью.
Файл dial описывает способ, которым используются
различные программы набора номера. Традиционно, переговоры программ набора
номера UUCP быстрее, чем модемы, потому что раньше было обычной практикой
иметь одно (дорогое) автоматическое устройство набора, обслуживающее целый
набор модемов. Сегодня большинство модемов имеют встроенную поддержку набора,
так что это различие становится более размытым.
Однако различные программы набора номера или модемы могут требовать
различной настройки. Вы можете описать каждый из них в файле
dial. Куски в файле dial
начинаются с команды dialer, которая определяет имя
программы набора номера (звонилки).
Наиболее важная часть, скрипт модема (modem chat), определяется командой
chat. Подобно скрипту входа в систему (login chat), он
состоит из последовательности строк uucico, посылаемых
программе набора номера и ответов, которые требуется получить. Они обычно
используются, чтобы сбросить модем к известному состоянию, и набирать номер.
Вот пример для Hayes-совместимого модема:
# NakWell modem; connect at high speed
dialer nakwell # dialer name
chat "" AT&F OK\r ATH1E0Q0 OK\r ATDT\T CONNECT
chat-fail BUSY
chat-fail ERROR
chat-fail NO\sCARRIER
dtr-toggle true
Скрипт модема начинается с "", пустой ожидаемой
строки. Cледовательно, uucico пошлет команду
(AT&F) сразу же. Команда Hayes
AT&F нужна для сброса модема. Затем uucico
ждет, пока модем не пошлет OK, и посылает следующую
команду, которая выключает локальное эхо, и т.п. После того, как модем
снова возвращает OK, uucico
посылает команду набора ATDT (для России
ATDP). Escape-последовательность
\T в этой строке заменяется на номер телефона, получаемый из файла
sys. Затем uucico ждет, пока
модем не возвратит CONNECT, который говорит о том,
что соединение с удаленным модемом было установлено успешно.
Часто модем будет не в состоянии соединиться с удаленной системой,
например, если другая система общается с кем-то еще, и линия занята. В этом
случае модем вернет сообщение об ошибке, указывающее на причину отказа.
Скрипт модема не способен обнаружить такие сообщения;
uucico будет ждать требуемую строку, пока не выйдет время ожидания. В
файле регистрации UUCP (log file) будет записано "timed out in chat script"
вместо истинной причины.
Однако, Taylor UUCP позволяет Вам поставить в известность
uucico об этих сообщениях, используя команду
chat-fail, как показано выше. Когда
uucico обнаруживает строку chat-file при выполнении
скрипта модема, то прерывает обращение и регистрирует сообщение об ошибках в
файле регистрации UUCP (log файле).
Последняя команда в показанном выше примере говорит UUCP переключить
строку DTR перед запуском скрипта модема. Большинство модемов может
быть сконфигурировано так, чтобы при обнаружении изменений в строке DTR
перейти в командный режим. Вы также можете сконфигурировать модем на сброс
при обнаружении перехода на DTR. Некоторые из них, однако, не понимают таких
вещей и зависают.
В первый момент это может показаться абсурдом, но на самом деле UUCP
поверх TCP не такая уж плохая идея, особенно при пересылке большого
количества данных, типа новостей Usenet. На TCP-узлах новостями в основном
обмениваются, используя NNTP протокол, в котором статьи запрашиваются и
посылаются индивидуально, без сжатия и прочей оптимизации. Хотя и подходящая
для больших узлов с большим объемом новостей, эта методика не подходит для
небольших участков сети, которые получают новости медленным соединением типа
ISDN. Им удобней объединить качества TCP с преимуществами посылки новостей в
больших пакетах, которые могут быть сжаты и таким образом перемещаться с
очень низкими затратами. Стандартный способ передать эти пакеты состоит в
том, чтобы использовать UUCP поверх TCP.
В файле sys Вы определяете систему, которую
нужно вызвать через TCP.
system gmu
address news.groucho.edu
time Any
port tcp-conn
chat ogin: vstout word: clouseau
Команда address задает IP-адрес машины или ее
полное доменное имя. Соответствующий участок файла port
выглядел бы так:
port tcp-conn
type tcp
service 540
Этот пример говорит, что TCP-соединение должно использоваться, когда файл
sys ссылается на tcp-conn
, и что uucico должен пытаться соединяться с
TCP-портом 540 на удаленной машине. Это заданный по умолчанию номер порта для
обслуживания UUCP. Вместо номера порта, Вы можете также давать символическое
имя порта командой service. Номер порта,
соответствующий этому имени будет найден в файле
/etc/services. Общее имя для UUCP-сервиса uucpd
.
Допустим, что Вы используете прямое соединение своей системы
vstout с системой
tiny. Как и в случае с модемом, Вы должны описать вход в систему в
файле sys. Команда port
идентифицирует последовательный порт tiny.
system tiny
time Any
port direct1
speed 38400
chat ogin: cathcart word: catch22
В файле port Вы должны описать последовательный
порт для прямого соединения. Описание программы набора номера
(dialer) не нужно, так как нет никакой
потребности в наборе.
port direct1
type direct
speed 38400
device /dev/ttyS1