|
Bog BOS: UUCP (Unix Unix Control Protocol)
|
Последнее изменение текста: 19980716
Скопировано с www.bog.pp.ru: 2024.11.21
Bog BOS: UUCP (Unix Unix Control Protocol)
Примечание. Здесь собраны тексты лекций, которые я читал то ли
в 1994, то ли в 1995 (Motorola Unix System V/88 4.0), а также опыт
практического использования UUCP в Solaris 2.5 (система остановлена
в 1998 году). В настоящее время мы UUCP не используем и использовать
не планируем. Чего и всем желаем :)
Basic Networking Utilities (BNU, он же Honey Dan Ber) - UUCP -
постановка в пакет заданий на пересылку файлов и выполнение команд на
удаленной системе.
Описывается версия BNU от 1983 (признак: /usr/lib/uucp/Systems
или /etc/uucp/Systems). Все команды находятся в /usr/bin.
- uuglist: узнать список приоритетов
- uuname: выдает список систем, к которым можно
обратиться uucico
- uuname -l: выдает имя локальной системы
- uuname -c: выдает список систем, к которым можно обратиться по cu
- mail имя-системы!имя-пользователя: послать письмо;
если система или пользователь не существует, то Вы получите сообщение об этом
- cat report | mail newyork!tom: посылка текстового файла
- mail newyork!japan!anna: посылка письма по цепочке
- uucp [option] source destination:
копировать файлы с/на удаленный компьютер. source и destinaton имеют вид:
[имя-системы!]имя-файла(ов). Опции:
- -C копировать файл в буфер пересылки вместо создания ссылки
- -f не создавать директорию, если не существует
- -j вывести номер задания
- -m известить заказчика почтой о завершении работы
- -n имя-пользователя известить получателя о прибытии файла
- -r поставить задание в очередь, но не запускать uucico сразу же
- -s имя-файла послать сообщение о передаче в файл
Команда uucp НЕ
пересылает файлы, а только ставит их в
очередь, программа uucico
соединяется с удаленной системой, берет их из
очереди и пересылает. Можно
использовать
метасимволы как на
локальном, так и на
удаленном конце (не забудьте
"закавычить" их). Если Вы
указываете
относительное имя файла, то uucp
добавляет перед ним имя текущей
директории перед
дальнейшей
обработкой. Не удаляйте файл, не
дождавшись конца пересылки (или
используйте -C).
Относительное имя на
удаленном конце также
расширяется именем текущей
директории на ЛОКАЛЬНОМ конце!
Ограничения на пересылку:
Администратор каждой системы задает список
директорий из которых чужие системы могут
читать и в которые они могут писать. /usr/spool/uucppublic -
эта директория обычно доступна (не
забудьте побыстрее взять их оттуда). Можно
просто писать
~/[имя-пользователя]. По
умолчанию берется
пользователь uucp (его домашняя
директория и есть /usr/spool/uucppublic).
Пользователь uucp должен иметь право
читать/писать файл на
соответствующей машине
(пересылка ведется от его имени!).
- uuto [options] file(s) имя-системы!имя-пользователя: послать файлы на удаленную систему, в
/usr/spool/uucppublic/receive/имя-пользователя/имя-системы и
известить письмом получателя. Опции:
- -m послать письмо заказчику о завершении
- -p сделать копию файла в буфер перед пересылкой
-
uupick [-sимя-системы][имя-файла]:
посмотреть нет ли файлов, отправленных с помощью uuto данному
пользователю [из данной системы] и в диалоге запросить:
- d - удалить файл
- m [dir] - переслать файл
- a [dir] - переслать все файлы с той же системы
- q - выйти
-
uux [options]имя-системы!командная-строка:
выполнить командную строку на
удаленной системе.
Опять-таки только ставит в очередь. Список
возможных команд ограничен и
определяется
администратором удаленной системы. Если в
командной строке
встречается восклицательный знак, то uux считает что файл надо
взять с другой системы (если перед
восклицательным знаком пробел, то с Вашей
системы, иначе он пытается
выделить имя системы перед восклицательным знаком).
Относительные имена
рассматриваются
относительно рабочей
директории uucp на
удаленной машине. UUCP
использует uucp, чтобы собрать все
затребованные файлы и
скопировать их на ту систему, где будет
исполняться командная строка. Эти файлы
должны иметь
соответствующие права и
существовать на момент
пересылки (а не только в момент вызова uux).
Допустимые специальные символы: меньше, больше, точка с
запятой,
вертикальная черта (не забудьте о
двойных кавычках).
Недопустимые специальные символы: двойное меньше,
двойное больше, амперсенд,
квадратные скобки, знак вопроса.
Стандартный вывод теряется (если он не
переназначен в файл или канал).
Удаленная команда
выполняется от имени
пользователя uucp. Опции:
- - взять стандартный ввод и передать как
стандартный ввод команды на удаленной системе
- -a имя-пользователя известить о завершении
- -c не копировать затребованные файлы в spool-директорию
- -C копировать их
- -g буква задать приоритет задания (a - старший, Z -
младший)
- -j вывести номер задания
- -n не извещать письмом о завершении
- -p использовать стандартный ввод
- -r поставить задание в очередь, но не запускать uucico
- -s имя-файла послать статус пересылки в файл
- -x число задать уровень отладки (9 - старший, 0 - младший)
Примеры:
- uux "foreign!who > my!~john/who.foreign"
- uux "foreign!who | rmail (my!john)"
-
uustat [options]:
выдать состояние заданий. Опции:
- -a всех
- -k номер-задания удалить задание из очереди
- -m проверить доступность других систем
- -p выдать ps для всех процессов, связанных с UUCP
- -q выдать число заданий в очереди (имя системы, число заданий,
время последней попытки контакта и его состояние)
- -r номер-задания "потрогать" файлы, связанные с заданием
- -s имя-системы выдавать информацию, связанную с системой
- -u имя-пользователя выдавать информацию, связанную с
пользователем
о каждом задании выдается: номер
задания, время
постановки в очередь, тип запроса (S -
пересылка, R - прием), имя удал.
системы, имя выдавшего запрос
пользователя, размер и имя файла или
команда и ее параметры.
-
uulog [options]:
показать журнал сообщений. Опции:
- -u имя-пользователя для данного пользователя
- -s имя-системы для данной системы
- -fимя-системы аналогично, как в tail -f
- -число показать последние число строк
- -x проверить uuxqt файл для данной системы или пользователя
- cu [options] тел.номер | имя-системы: удаленный терминал. Опции:
- -aимя-устройства указать имя устройства-номеронабирателя
- -d печать диагностики
- -e линия с проверкой на четность
- -l line имя файла в /dev
- -h полудуплексная линия
- -o линия с проверкой на нечетность
- -s скорость
Возможные проблемы:
- No device available (устройство занято другой программой)
- а может быть было занято
- а может быть на том конце не висит getty (ttymon)
- а может быть параметры линии разные
- а может надо пару раз нажать Enter
строчки, начинающиеся с тильды, интерпретируются как команды:
- ~. завершить сеанс
- ~~ маскировать тильду
- ~%take from [to] взять
текстовый файл с удаленной системы (только в Unix, без
проверки и с причудами)
- ~%put from [to] положить текстовый файл на
удаленную систему (только в Unix)
- ~!команда выполнить команду на локальной системе
- ~$команда выполнить команду на локальной системе и
послать вывод на удаленную
- ~%cd директория сменить рабочую директорию на
локальной системе
- ~%break
- ~t выдать характеристики линии
-
uucp создает рабочий файл в /usr/spool/uucp,
содержащий имя исходного файла, имя
результирующего файла, тип запроса, опции (может быть
копирует исходный файл)
-
вызывается uucico
-
создается статус-файл для задания
-
uucico сканирует
спул-директорию в поисках готовых
заданий и пытается
установить контакт с
удаленной системой (создавая при этом
лок-файл, чтобы другой
экземпляр uucico не лез к той же
системе). При этом могут быть
следующие проблемы:
- SYSTEM not in Systems (имя системы не найдено в файле Systems)
- Wrong time to call (неподходящее время для контакта или Ваша
система пассивная)
- CALLBACK REQUIRED (Ваша система сконфигурирована для обратного вызова)
- NO CALL (RETRY TIME WAS NOT REACHED) совсем недавно пытались
связаться с этой системой, время до повторной попытки еще не истекло
- NO DEVICES AVAILABLE терминальная линия занята другим процессом
- DIAL FAILED либо удал. система не
отвечает, либо проблемы с файлом Devices
- DEVICE LOCKED остался замок от пред. попытки доступа к той же удал.
системе
- LOGIN FAILED (BAD LOGIN/PASSWORD) не удалось войти в удал. систему
- STARTUP FAILED
- REMOTE REJECT AFTER LOGIN двум uucico не удалось начать разговор
- WRONG MACHINE NAME наша система незнакома удал. системе
- BAD LOGINE/MACHINE COMBINATION проблема с правами
- REMOTE HAS A LOCK FILE FOR ME удал. система в это же время вызовает
нашу
- Вот теперь начинается передача файлов
-
REMOTE ACCESS TO PATH/FILE DENIED не
хватает прав на передачу
-
BAD READ не хватило места на
удаленной машине
-
теперь системы
обмениваются пакетами данных и
подтверждениями
- CONVERSATION FAILED пропала связь во время передачи
-
Как только передача файла успешно
завершена, он
пересылается из временной
директории на
предназначенное ему место Если среди
запросов был запрос на
удаленное выполнение, то в
спул-директории на
удаленной машине создается файл с
запросом на
выполнение. Как только
вызывающая uucico передала все запросы, она
пытается завершить работу, если
приемной uucico есть что
передать, то они меняются ролями, иначе сеанс
завершается. Если был передан запрос на
выполнение, то на удаленной машине
вызывается uuxqt, который читает файл с
запросом на
выполнение, проверяет есть ли команда в
списке
разрешенных, запускает
пересылку
необходимых файлов и, в конце концов,
выполняет команду.
- CONVERSATION SUCCEEDED хотя сама удаленная команда могла и не
выполниться
Условия передачи файлов по цепочке
- только через /usr/spool/uucppublic
- на промежуточных машинах д.б. разрешено выполнять uux, uucp
- на всех машинах д.б. одна версия uucp
- неэтично пересылать большие файлы за чужой счет
- большой файл может быть обрезан
Работа UUCP с точки зрения администратора |
По материалам Motorola Unix System V/88 4.0.
Все файлы в /etc/uucp и /var/spool/uucp д.б. с
правами для uucp, а не root.
home для uucp: /usr/lib/uucp
Пользователь nuucp должен иметь в качестве командного процессора uucico.
Большинство
административных программ лежит в /usr/lib/uucp (uucleanup, Uutry, uucheck).
Демоны:
-
uucico - выбирает
устройство,
устанавливает связь, входит в
удал.систему,
пересылает файлы,
журнализует
результаты и извещает
пользователя почтой;
вызывается из uucp, uux, uuto, uusched и Uutry
/usr/lib/uucp/uucico [-f] [-rроль]
[-sимя-системы]
[-xуровень-отладки-от0до9]
где роль=0 -
вызываемая (slave), 1 -
вызывающая (master)
-
uuxqt - ищет в
спул-директории заказы на
выполнение, пришедшие с удал.
компьютера и выполняет их;
вызывается из uudemon.hour (cron)
/usr/lib/uucp/uuxqt [
-sимя-системы] [
-xуровень-отладки]
перед запуском
устанавливаются
переменные окружения:
-
UU_MACHINE - узел,
пославший задание
-
UU_USER - имя
пользователя,
пославшего задание
-
uusched - планирует
выполнение заказов;
вызывается из uudemon.hour (cron)
/usr/lib/uucp/uusched
-uуровень-отладки-для-uucico
-xуровень-отладки
-
/usr/lib/uucp/uucleanup -
удаление старых файлов из спула,
информируя неудачника о
неотправленной почте и
невыполненных
командах
uucleanup [-Cвремя] [-Dвремя] [-mстрока] [-oвремя]
[-sсистема] [-Wвремя]
[-xуровень-отладки-от0до9]
[-Xвремя]
-Cвремя - какой давности (в днях) C-файлы
удалять, извещая
неудачника (по умолчанию и uudemon.cleanup - 7
дней)
-Dвремя - какой давности (в днях) D-файлы
удалять, пытаясь отправить почту и
запустить rnews (по
умолчанию и uudemon.cleanup - 7
дней)
-mстрока - строка сообщения для ключа -W (по
умолчанию что-то про местного
администратора)
-oвремя - какой давности (в днях) прочие файлы
удалять (по умолчанию и uudemon.cleanup - 2 дня),
почему не 7 как у
предыдущих?
-sсистема -
обрабатывать только файлы данной
системы (узла)
-Wвремя - посылать
предупреждение о
заждавшемся указанное число дней
задании (а кому оно уходит в
случае почты и
новостей?)(по
умолчанию и uudemon.cleanup - 1
день)
-Xвремя - какой давности (в днях) X-файлы
удалять (по умолчанию и uudemon.cleanup - 2 дня),
почему не 7 как у
предыдущих?
Файлы
-
база данных: /etc/uucp,
определяет
устройства, линии, системы, права... и
состоит из файлов:
-
Config - параметры UUCP
-
Protocol=G(7,512)ge -
протокол по умолчанию
-
Devices - описание типа устройства
-
Type Line Line2 Class dialer-token
пары
где Type - тип должен
соответсвовать полю Type в Systems (третье):
-
Direct - прямое
соединение (м.б. дополнено сзади
модификатором)
-
ACU[,протоколы] - модем (м.б.
дополнено сзади
модификатором)
-
имя сети - например TCP
-
имя системы - признак того, что данное
устройство для
определенной системы в Systems
(подставляется третье поле из той строки Systems,
первое поле которой
совпадает с указанным именем системы)
пример: TCP,eg tcp - - TLIS \D (после
запятой
перечислены
допустимые протоколы передачи, порядок важен).
-
Line - имя устройства (имя файла в /dev), если за ним
идет ',M', то
устройство будет открыто не
дожидаясь наличия несущей
-
Line 2 - должен быть прочерк
-
Class - для ACU и Direct скорость
устройства, может быть с буквой перед ней, чтобы
различать классы диалеров, это поле д.
соответствовать
четвертому полю в Systems. Может стоять слово Any,
тогда в Systems скорость д.б. указана явно (а то
будет по умолчанию 1200).
-
dialer-token пары: dialer может быть имя
модема, слово direct или uudirect для Direct; token либо
стоит сразу же за ним, либо берется из Systems; в
последней паре token обычно
отсутствует и берется из поля Phone файла Systems; для dialer
должна быть
соответствующая строчка в Dialers или это
зафиксированное имя: TCP (TCP/IP), TLI (Transport Layer Interface network
без стримов), TLIS (TLI со
стримами). Для обычного модема пара только одна: в
качестве dialers указано слово, которое
соответствует первому полю в файле Dialers; token -
опускается (в этом случае в
качестве token для диалера
передается поле Phone из Systems. Для
прямого соединения или имя системы
указывается слово direct или uudirect. Другие
случаи вряд ли нам
встретятся.
Рассмотрим конкретные ситуации:
-
прямое
подключение модема: в качестве dialer
используется имя модема, которое д.б.
определено в файле Dialers. В
качестве token
подставляется
телефонный номер из файла System
-
прямой провод: в качестве dialer
указывается слово direct, token
отсутствует
-
компьютер на том же port selector - ═вряд ли
встретится
-
модем на port selector - вряд ли
встретится. А может так можно
использовать модем на киске через
обратный telnet?
В поле token можно
использовать
- \T преобразовывать телефонный номер с помощью Dialcodes
- \D не преобразовывать
-
Dialers - определяет начальные
переговоры по линии, прежде чем по ней можно будет передавать данные
имя_диалера замены ожидаем-посылаем ...
-
имя_диалера
соответствует пятому полю в Devices
-
замены - строка
перекодировки номера телефона: пары
символов: первый символ из пары
отображается на второй( обычно
заменяют знак равно на команду
дождаться гудка и знак минус на команду паузы)
-
нулевая строка
изображается как
""
специальные символы:
- \b backspace
- \N NULL
- \p пауза 0.5 секунды
- \d задержка 2 секунды
- \D телефонный номер или token без трансляции через Dialcodes
- \T - //- с трансляцией
- \K break
- \E при выводе символа в линию, проверяется
возвращается ли он обратно
- \e запретить это дело
- \r CR
- \c в конце строки запрещает LF и CR (обычно добавляются
автоматически)
- \M включить CLOCAL
- \m выключить
- \n NL (LF)
- \три-восьмеричных-цифры
-
Systems -
содержит информацию,
необходимую uucico для
установления связи с
удаленной системой. Каждая строка
описывает отдельную систему с которой можно
связаться или которая может
связаться с Вами. Одной системе может
соответствовать несколько строк, каждая из
которых
представляет отдельный путь доступа к
системе.
имя_системы
время_доступа тип класс
номер_телефона ожидаем посылаем ...
-
время_доступа
ограничивает время когда можно
вызывать удаленную систему и имеет формат:
день_и_время[;минут_до_повтора]. День
записывается так:
Su Mo Tu We Th Fr Sa Wk (рабочие дни) Any
Never
время
записывается в виде
интервала:
0800-1230 (с 8.00 до 12.30)
0800-0600 (кроме как с 6.00 до 8.00)
Если время до повтора не указано, то перед
первым повтором
используется интервал по
умолчанию, перед вторым вдвое больше, перед
третьим вчетверо больше и т.д., пока
интервал не превысит 23 часа.
-
тип и класс (грубо
говоря,═скорость) должны
соответствовать первому и
четвертому полям в файле Devices; в поле класс
может стоять Any. После поля тип
устройства может быть указан через
запятую тип протокола.
-
номер_телефона может
содержать буквенное
сокращение, которое
заменяется на строку из Dialcodes.
-
поле ожидаем может иметь форму:
ожидаем[-посылаем-ожидаем] где
посылаем шлется, если
предыдущее ожидаем не сбылось и
т.д.
пустая строка выглядит так ""
каждое посылаем по
умолчанию
дополняется LF, если не
завершается
\c
специальные символы:
- \p пауза 0.5 секунды
- \d задержка 2 секунды
- \H игнорировать один hangup (для обеспечения callback)
- \K break
- BREAK -//-
- EOT послать EOT и NL дважды
- \b BS
- \N NULL
- \E при выводе символа в линию, проверяется
возвращается ли он обратно
- \e запретить это дело
- \r CR
- \s пробел
- \t табуляция
- \\ \
- \c в конце строки запрещает LF и CR (обычно добавляются
автоматически)
- \M включить CLOCAL
- \m выключить
- \n NL (LF)
- \три-восьмеричных-цифры
-
Dialcodes - в
каждой строке содержит
буквенное сокращение (см. поле
номер_телефона в файле Systems) и
соответствующий номер
-
Permissions -
определяются права
удаленных
компьютеров на вход,
пересылку и
исполнение; строка состоит из пар
"имя=значение"; значение может быть
списком через двоеточие;
комментарий
начинается с "#"; обратная косая черта
определяет
продолжение строки; в файл входят строки двух
типов: MACHINE и LOGNAME
-
каждый UID,
используемый для входа
удаленной системы д.
присутсвовать, причем ровно в одной
LOGNAME-строке
-
если вызываемая система не
встречается ни в одной MACHINE-строке, то
действуют правила по
умолчанию: локальные
пересылки будут разрешены;
удаленный компьютер может
посылать файлы в Ваш /usr/spool/uucppublic; с
удаленного компьютера можно
запрашивать
выполнение только rmail.
-
когда вызывают Вашу систему, то Вы не можете
убедиться, что
вызывающая система та, за которую она себя
выдает.
-
логическая строка состоит из
имя/значение пар,
разделенных
пробелами
имя=значение
-
MACHINE=имя-системы[:имя-системы...] когда мы
звоним; можно
использовать также слово OTHER
-
LOGNAME=имя-пользователя[:имя-пользователя...]
когда нам звонят
-
REQUEST=[yes|no]
разрешать ли
вызывающей системе
запрашивать пересылку
-
SENDFILE=[yes|call] когда
удаленный компьютер,
вызвавший Вас
заканчивает работу, то он может
спросить Ваш компьютер нет ли у него
заданий; yes разрешает Вашему
компьютеру ответить (имеет смысл только в
строке LOGNAME) -
обязательно если Ваш
компьютер в пассивном режиме; call -
запрещает.
-
READ и WRITE
определяет из каких
директорий uucico может читать или писать; по
умолчанию оба равны /usr/spool/uucppublic; может быть
несколько имен
разделенных
двоеточием
-
NOREAD и NOWRITE
определяют исключения для READ и WRITE
-
CALLBACK=[yes|no] - в ответ на вызов Ваша
система не передает файлы, а
перевызывает удаленную систему; не
устанавливайте с обоих концов. Имеет смысл в
строке LOGNAME.
-
COMMANDS определяет список команд,
которые удаленная система может
выполнять на Вашей системе (в строках типа MACHINE
независимо от того, кто кого
вызывает); по умолчанию rmail. По
умолчанию путь для команды /usr/bin. Если в
списке команд указан явный путьдля
команды (/usr/ucb/rmail), то именно он будет
использован,
независимо от того, какой путь указан в uux. Можно
также указать ALL. При этом
подстановка путей все равно
происходит.
-
VALIDATE доп. контроль над
выполнением команд:
привилегированный компьютер должен
входить на Ваш через
отдельный UID и в LOGNAME-строке для этого UID
должна быть опция
VALIDATE=имя-системы:... в которой
указано имя этого
компьютера
-
если опции одинаковы, то в одной строке может быть и MACHINE и LOGNAME
-
Poll -
информация для опроса других систем, для
каждой системы содержит одну строчку: в
первом поле имя системы, затем
табуляция, затем список часов через пробел.
Используется демоном uudemon.poll,
который
устанавливает рабочие файлы для
планировщика, который
запускается через uudemon.hour
-
Devconfig - для
работы через TCP/IP
service=cu device=tcp push=ttcompat:tirdwr
service=uucico device=tcp
push=ttcompat:tirdwr
вместо
стрим-модуля ttcompat (Motorola) на Вашей
машине м.б. ntty (Solaris)
device должен
соответствовать строчке в файле Device
ключи:
-
push=список модулей для stream через
двоеточие
-
pop=список модулей,
изымаемых из stream через
двоеточие
-
connecttime=секунд
-
expecttime=секунд
-
msgtime=секунд
-
Sysfiles позволяет установить
различные файлы,
используемые в качестве Systems, Devices и Dialers для uucp и
cu
service=cu:uucico systems=Systems:Local_systems devices=xx:yy dialers=zz:ww
(можно
перечислить несколько файлов через
двоеточие)
-
Limits -
ограничивается
максимальное число
одновременных uucico, uuxqt и uusched,
формат:
service=[uucico|uuxqt|uusched] max=число
-
Grades -
определение типов
приоритетов работ и
ограничения для работ данного
приоритета (обратная черта в конце строки -
строка
продолжения, "#" в начале строки -
комментарий):
польз.приоритет сист.приоритет размер-задания id-тип id-список
-
польз.приоритет - имя
приоритета с точки зрения
пользователя;
-
сист.приоритет - одна буква от A до z (A -
высший, z - низший
приоритет);
-
размер-задания - 5000, 10K, 5M, Any
-
id-тип - как
интерпретировать id-список: User, Non-user, Group, Non-group
-
id-список - список имен через пробел или Any
одному
польз.приоритету может
соответствовать несколько строк, они будут
просматриваться
последовательно, до тех пор пока не
попадется та, которая
удовлетворяет
ограничениям.
Обязательно надо
определить приоритет default, иначе все будет
проваливаться в класс z:
default Z Any User Any
-
remote.unknown -
программа,
выполняющаяся, если система не найдена в Systems.
Обычно она заносит попытку в журнал и
прерывает соединение. Если
программа не имеет прав на
выполнение, то Ваша система будет
принимать вызов от ЛЮБОЙ
удаленной системы.
-
административные файлы: буферная
директория, файлы замки, копии файлов, ...
-
TM (временные файлы с данными,
передача которых не
закончена)
/var/spool/uucp/имя-удаленной-системы/TM.pid.ddd
как только файл данных передан
полностью, он
копируется в место
назначения, указанное в C.sysnxxx
-
LCK (замок для
предотвращения
дублирования
передачи)
/var/spool/locks/LCK.имя-системы.системный-приоритет
файл содержит pid держателя замка
(соответственно, если процесс помер, то замок
игнорируется)
в Solaris либо
-
LCK..имя-системы
-
LCK.имя-устройства
-
LCK.журнальный-файл
-
LK (замок для
предотвращения
одновременного
использования
устройства)
LK.старший-номер-устройства-содержащего-директорию.старший-номер-устройства.младший-номер
файл содержит pid держателя замка
-
C. (текст задания на
пересылку или
выполнение)
C.имя-удаленной-системысистемный-приоритетномер-задания(4-цифры)
-
тип запроса S(посылка), R(прием)
-
полное имя файла для
пересылки
-
полное имя целевого файла
-
имя
пользователя
-
список опций
-
имя
ассоциированного файла в
спул-директории
-
биты режима исходного файла
-
имя
уд.пользователя, которого надо
известить
-
D. (файлы данных - если заказано
копирование исходных
файлов)
D.5-символов-имени-системы4-цифры-номера-задания3-цифры-номера-файла
-
P. (контрольная точка - файл,
переданный не полностью; новые версии UUCP могут
возобновлять передачу с точки
прерывания, а не с
начала
P.имя-системыномер-заданияномер-файла
-
X. заказ на
выполнение,
переданные с
удаленного
компьютера
X.имя-системысистемный-приоритетномер-задания
-
имя заказчика и его системы
-
имя файла(ов),
необходимых для
исполнения
-
имя файла, который будет
использован как
стандартный ввод
-
имя системы и файла, куда
передать
стандартный вывод и stderr
-
командная строка
-
строка для кода возврата
-
журналы
-
все команды, выданные
пользователем,
администратором и
оператором
/var/spool/uucp/.Admin/command
имя_пользователя
время_запуска
командная_строка
-
журнал изменения состояния системы и
очереди
/var/spool/uucp/.Log/программа/имя_системы, где
программа - это uucp, uucico, uux и
uuxq
имя_пользователя
имя_уд.системы ид время pid
номер_передачи статус почему, где ид - ид-р
задания, если оно сейчас
выполняется
-
журнал
ошибок
/var/spool/uucp/.Admin/errors
тип_ошибки программа pid время
сообщение
номер_ошибки модуль строка
-
журнал
пересылок
/var/spool/uucp/.Admin/xferstats
имя_уд.системы
имя_пользователя Master/Slave
время_записи C(uucico)/U(uucp)/X(uux)/Q(uuxqt) pid
номер_передачи
имя_устройства
направление длина
время_передачи скорость
признак_ошибки
-
учетный журнал (о пересылке на
системе-запросчике, о
выполнении -
исполнителе)
/var/spool/uucp/.Admin/account
собирается только если файл
существует и имеет права на запись для uucp
uid
номер-задания
размер(байт или секунд)
C(выполнено)/P(частично)
класс-обслуживания(S -
стандартный)
сист.приоритет
имя-исходной-системы
имя-заказчика время
имя-результ-системы
имя-польз-назначения
имя-устройства ""
тип-задания(xfer - передача, rexe -
выполнение)
командная-строка
-
нарушения
безопасности
/var/spool/uucp/.Admin/security
xfer
имя_системы_запросчика
имя_запросчика
имя_системы_исполнителя
имя_польз.исполнителя
целевое_имя_файла
имя_исходной_системы
имя_собственника_файла
имя_исх.файла размер
время_модиф_файла
время_начала_передачи
время_завершения_передачи
rexe
имя_системы_запросчика
имя_запросчика
имя_исполнителя время
командная_строка
-
журнал
производительности
/var/spool/uucp/.Admin/perflog
собирается только если файл
существует и имеет права на запись для
uucp
записи двух видов: о
соединении и о передаче
-
conn время pid
имя_системы Master/Slave
имя_уд.системы
имя_устройства протокол "" realtime usertime system time
-
xfer
сист.приоритет время pid
имя_системы Master/Slave
имя_уд.системы
имя_устройства протокол ""
номер_задания
время_пребывания_в_очереди
полное_время_оборота размер
командная_строка
время_извлечения_из_очереди(real,user,system)
время_передачи(real,user,system),
время_завершения(real,user,system)
признак_ошибки
-
список
неизвестных систем,
пытавшихся
подсоединиться к
нашей
/var/spool/uucp/.Admin/Foreign
Процедура установки:
-
Инсталяция BNU
-
/etc/uucp/Permissions (LOGNAME=nuucp)
-
/etc/uucp/Devconfig для uucp поверх tcp
service=cu device=tcp push=ttcompat:tirdwr
service=uucico device=tcp push=ttcompat:tirdwr
-
/etc/uucp/Sysfiles лучше не трогать
-
/etc/uucp/Limits лучше не трогать
-
завести
пользователя uucp и
nuucp
uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp
nuucp:x:10:10:0000uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico
не забудь сказать pwconv
Обслуживание (командные файлы в /usr/lib/uucp,надо
занести их вызов в cronroot)
-
uudemon.poll: читает Poll и если там
упоминается какая-то система, то в
спул-директорию
записывается задание на общение с ней (таким
образом
обеспечивается опрос систем, даже если у нашей
машины нет никаких заданий к ним).
Рекомендация: дважды в час перед uudemon.hour.
-
uudemon.hour:
рекомендация: дважды в час
-
вызывает uusched, который ищет файлы с
заказами и планирует их
-
вызывает uuxqt, который ищет файлы с
заказами на
выполнение с других систем
-
uudemon.admin: вызывает uustat -p -q и
посылает почтой uucp.
Рекомендуется: трижды в день
-
uudemon.cleanup:
рекомендуется: раз в день в конце
-
собирает журналы от всех машин, сливает их в .Old
-
удаляет старые заказы и файлы с данными (7дней и
старше)
-
удаляет старые (2 дня) заказы на
выполнение с чужих машин
-
возвращает почту, которую не смогли
отправить
-
посылает письмо со
статистикой
Могут расти файлы: /usr/adm/sulog, /usr/lib/cron/log.
Отладка:
-
/usr/lib/uucp/uucheck -v #
проверяет все ли файлы для UUCP в
наличии
-
/usr/lib/uucp/Uutry -r
имя_системы # запуск uucico под
отладкой (в файл
/tmp/имя_системы)
Протоколы передачи:
-
g - проверка ошибок и повтор( ширина окна 7,
размер пакета 64),
медленный и надежный
-
G - то же самое, но ширину окна можно менять от 1 до 7,
размер от 32 до 4096
-
e - без обработки ошибок для среды,
ориентированной для передачи
сообщений (UDP?)
-
t - без обработки ошибок для
байт-ориентированной среды
(предназначен для TCP/IP)
-
f - без обработки ошибок и
синхронизации (X.25)
Самый свежий софт для анализа статистики UUCP,
который я нашел, - это tua 4.0 (декабрь 1993).
Источник,
документация. Обрабатывает журналы как BNU, так и Taylor.
Установка:
- ./configure
- отредактировать Makefile
- оставляем закомментаренными TCL и readline и SoftChip Btree
- комментарим обновление Makefile, config.status, configure, config.h.in
(зачем-то вызывает autoconf, который у меня генерит какую-то чушь)
- отредактировать customize.h: ;
- устанавливаем NET_DOMAIN (почему всего один?)
- комментарим TAILOR_UUCP
- #define DEFAULT_HDB_SPOOL_DIR "/var/uucp"
- tua.pcd (стоимость телефонных разговоров для разных стран): пока не знаю
как это использовать, но default = "germany" как наиболее простой
- make
- make install (права надо иметь)
- tua /usr/local/bin
- doc/tua.info /usr/local/info/tua.info
- doc/tua.man /usr/local/man/man1/tua.1
- tua.pcd /usr/local/lib/tua.pcd
Полезные ключи tua (неинтересные ключи не описаны), это
называется конфигурируемость :(
- --no-system-rep (не печатать отчет по системам)
- --no-user-rep ( не печатать отчет по пользователям)
- --no-daily-rep (не печатать ежедневный отчет)
- --no-hourly-chart
- --command-lists (подробный отчет по каждой команде)
- --prefix-path путь (префикс для обрабатываемых журналов - по
умолчанию /var/uucp)
- --update-history (прва надо иметь на запись в .Admin/tua.history
- --reset-history (обнулить счетчики)
- --user-alias USER=ALIAS
- --port-alias PORT=ALIAS
- --system-alias SYS=ALIAS
- --glob-user-alias GLOB=ALIAS (аналогично --user-alias, но в имени
USER можно использовать метасимволы)
- --glob-port-alias GLOB=ALIAS
- --glob-system-alias GLOB=ALIAS
- --taylor-uucp (брать журналы в формате taylor uucp)
- --hdb-uucp (брать журналы в формате hdb - BNU)
Разбор полетов:
- показывает 500МБ/день с демоса! что он считает
- какие файлы он использует (чтобы остальное не
архивировать: .Admin/xferstat и .Log/ ?)
Пакет SUNWCnet 7.2 (SUNWbnur 11.5.1 + SUNWbnuu 11.5.1).
Демоны:
-
uucico:
устанавливает
соединение,
производит проверки,
пересылает файлы, создает журнал и
извещает
пользователя
(вызывается из uucp, uuto, uux, uushed, Uutry).
-
uuxqt: выполнение запросов на
удаленное выполнение из очереди (X-файлы).
Вызывается из uudemon.hour (cron).
-
uusched:
упорядочивает очередь запросов к uucico и
вызывает его.
Вызывается из uudemon.hour (cron).
-
in.uucpd: серверная часть uucp по сети.
Вызывается inetd, когда приходит
соединение по порту uucp/tcp.
Проверяет имя/пароль.
Демоны для crontab (образец в /usr/lib/uucp/uudemon.crontab):
-
uudemon.poll -
вызывается cron (обычно раз в час),
проверяет файл /etc/uucp/Poll и для тех узлов, для
которых надо, создает
фиктивную работу, чтобы uushed в свою
очередь вызвал uucico для этого узла.
-
uudemon.hour - вызывает uushed, чтобы
проверить не пора ли кого вызвать и uuxqt, чтобы
выполнить
накопившиеся задания с
удаленных узлов. Обычно дважды в час.
-
uudemon.admin - посылает по почте
результат uustat (там и так этой почты...)
-
uudemon.cleanup - сливает журналы для разных узлов из /var/uucp/.Log в
/var/uucp/.Old; удаляет старые файлы (C и D -
старше 7 дней, X - старше 2 дней);
возвращает почту, которую не удалось
отправить; посылает
суммарную статистику почтой
администратору.
Административные программы (/usr/lib/uucp, UID: uucp):
-
/usr/bin/uulog - показать журнал.
-
uucleanup - очищает спул.
Вызывается из uudemon.cleanup (cron).
-
Uutry -
тестирование линии связи
(вызывает uucico в режиме отладки).
-
uucheck - проверяет
правильность установки и
настройки подсистемы UUCP.
Программы для пользователя (/usr/bin, UID: любой):
База данных настройки (/etc/uucp). Она же используется для настройки PPP:
-
Config
-
Devconfig
-
Devices
поле Line может содержать cua/a
(последовательный порт A) или cua/b
если в поле Class стоит Any, то по
умолчанию
принимается скорость 2400 вместо 1200
-
Dialers
см. замечание по поводу
"посылаем" в Systems.
-
Dialcodes
-
Grades
-
Limits
-
Permissions
дополнительная пара MYNAME=имя-узла (можно
использовать также для вызова себя - в целях
тестирования), см также файл Sysname
-
Poll
-
Sysfiles
-
Systems
В поле "посылаем" можно
использовать
конструкцию: STTY=значение, где
значение - любой режим stty (см. stty(1V) и termio (4)).
Например, для включения
аппаратной
синхронизации надо сказать STTY=crtscts. В поле
посылаем можно управлять
четностью:
-
P_ZERO
-
P_ONE
-
P_EVEN (по умолчанию)
-
P_ODD
-
Sysname - позволяет
определить уникальное UUCP-имя для
компьютера, отличное от TCP/IP имени.
Рабочая область не /usr/spool/uucp[public], а /var/spool/uucp[public]
Для входных соединений в /etc/passwd д.б. пользователь nuucp или
аналогичный, иначе его надо удалить:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
Чтобы можно было делать входные
соединения по TCP надо в /etc/inetd.conf:
uucp stream tcp nowait root /usr/sbin/in.uucpd in.uucpd
а в /etc/services (если
используется NIS, то
позаботиться о нем):
uucp 540/tcp uucpd
Чтобы можно было вызывать другие узлы по TCP надо в /etc/uucp/Systems
ззанести:
имя-узла время TCP -
доменное-имя ожидаем посылаем ...
Необходимо регулярно проверять размер /var/spool/uucppublic
(может закрыть ее?) и почты для uucp
(фильтровать?)
Формат журнала пересылок (/var/spool/uucp/.Admin/xferstats)
немного другой:
имя_уд.системы!имя_пользователя Master/Slave
время_записи_в_скобках
(C(uucico)/U(uucp)/X(uux)/Q(uuxqt),pid,номер_передачи)
имя_устройства_(для
TCP_минус_в_квадратных_скобках)
направление_(меньше_минус)
длина_(не верю)═/
время_передачи secs, скорость bytes/sec
Поставил patch 104889-03 в надежде, что он не
только решил проблему 2000 года, но и будет
собирать правильную
статистику в xferstat. Увы, число байт в
пакете по-прежнему берется от балды :(
Вычесть 318304=0x4db60?
Говорят, что при работе с модемами (не TCP) все в порядке.
В настоящий момент, выключено, но когда-то использовался для чтения USENET
от demos (по-другому они не давали - хотели паковать, чтобы уменьшить
траффик). Еще раньше (:) получал почту от него же для variant.msk.su.
Когда-то работал fidogate: Sparc брал новости и почту от ДЕМОСа и готовил
uucp-задания для p5server.deol.ru (OS/2), который их преобразовывал потом в
формат FIDO. Соответственно, Sparc обращаясь в ДЕМОС выдавал себя за
p5server, а когда настоящий p5server обращался к нему, то выдавал себя за
ДЕМОС ;)
uudemon.poll - не используется, при моих минимальных потребностях
понятнее (легче в управлении) прямой вызов uusched (или даже uucico) и uuxqt
напрямую из crontab.
uudemon.hour - это просто запуск отвязанных uusched и uuxqt - удобнее
вызывать их напрямую в crontab.
uudemon.admin - это почти исключительно вызов uustat -p и uustat -q.
uudemon.cleanup - единственный полезный файл из комплекта администратора;
запускается раз в неделю; скидывает недельные журналы в Old (затирая журналы
и статистику предыдущей недели): xferstats, audit, command, errors, Foreign,
perflog, security, uucleanup (что-то не так),
журналы (uucp, uux, uucico, uuxqt) для каждой машины. Запускает uucleanup и
посылает отчет хозяину. Самостоятельно удаляет всякий мусор (типа core).
Удаляет старые файлы из публичной директории и пустые директории из спула.
Простенькая обработка статистики и посылка отчета хозяину.
Права у журналов странные, можно попробовать их
уменьшить.
Нужны ли нам .Admin/account и .Admin/perflog?
Основные директории, за которыми надо следить:
- /var/spool/uucp - буфер для накопления заданий и рабочих файлов
- /var/uucp - журналы
Вызывать uucico из crontab, но фильтровать почту о
удачных пересылках и посылать ее администратору
Должен быть пользователь uucp (без права на shell).
Настройки в /etc/uucp:
- Config , Devconfig, Dialcodes, Dialers, Grades, Limits, Poll,
Sysfiles - стандартные
- в Sysname лежит имя моего uucp-узла
- в Devices в строке TCP,te убран протокол t (демос его не любит)
- в Systems добавлены строчки для вызова соседей:
demos Any;0 TCP - kremvax.demos.su login: имя_входа assword: пароль
- в Permissions добавлены строчки для соседей: MACHINE=demos REQUEST=yes
MYNAME=имя-моего-узла COMMANDS=rnews:rmail:rbmail
crontab: раз в неделю uudemon.cleanup, раз в 10 минут uucico на demos и раз
в час uuxqt на demos (на случай нескончаемого потока).
Обработка журналов.
Настройка почты:
rbmail - Rbmail.tar.Z с релкомовского архива, чуть правленный для
совместимости с Solaris - убраны ссылки на RMAIL2 (/bin/rmail) и рабочая область
передвинута из /usr/spool в /var/spool - и заслан в /usr/bin;
использование rcbmail в практике не встречалось,
так что бороться с ним не стал;
rmail является линком на стандартный /usr/bin/mail из Solaris,
если будут проблемы, то можно будет разобраться с rmail из поставки sendmail)
Настройка новостей:
- прием
cunbatch - далее идет gzip-ованный пакет заданий для rnews
ln -s /usr/local/news/bin/rnews /usr/bin/rnews
- посылка
- в crontab вставить посылку новостей через uucp на demos
7 * * * * /var/news/etc/send-uucp demos
- убрать посылку на deolws с целью посылки оттуда на demos
- поменять в send-uucp: -gd на -glow (нет приоритета d у меня!)
Выключить перенаправление почты на root вместо uucp.
|
Bog BOS: UUCP (Unix Unix Control Protocol)
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru