Система пересылки файлов по телефону.

Если  uucp  правильно  сконфигурировано,  то  его использование
выглядит примерно так:

   uucp -r moj_fajl  'pulsar!fajl_tam'

перешлет  moj_fajl  на  удаленную  машину  pulsar. Хотя, скорее
всего не  сделает,  из-за  ограничений  на  права  доступа.  А,
впрочем, такая команда скорее всего сработает:

   uucp -r moj_fajl  'pulsar!~'

через некоторое время этот файл вы сможете обнаружить на машине
pulsar в каталоге

    /usr/spool/uucppublic/

в этот каталог разрешено копирование с удаленных машин, для не-
го используется специальное обозначение: "~"

Пусть вас не удивляет, что в команде uucp  использовались  оди-
нарные  кавычки.  Они  нужны, чтобы заэкранировать "!" и "~" от
вашего командного интерпретатора ksh или bash. Ключ -r в коман-
де uucp нужен, чтобы НЕ ЗАСТАВЛЯТЬ нашу машину немедленно начи-
нать звонить на pulsar. Она сама  позвонит,  в  предусмотренное
для этого время.

uucp поддерживается на двух уровнях:
  1. Пользовательский. Это команды uucp - постановка файла
в очередь на удаленную пересылку, и uux - постановка
в очередь на пересылку удаленной команды.

 2.  Системный.  Периодически,  автоматически запускается демон
uucico - (UUCP Copy in Copy out). Он созванивается с удаленными
машинами  по  телефону.  На  удаленной машине также запускается
"встречный" демон uucico. Наш демон "проталкивает" на удаленную
машину  все файлы, которые к этому времени накопились в очереди
на отправку туда. После этого  он  "принимает"  файлы,  которые
приготовила  для  нас  удаленная  машина (их к нам проталкивает
"встречный" демон uucico, а наш принимает). После  этого  сеанс
uucico  заканчивается.  А  пользователи обнаруживают, что у них
возникли новые файлы.

   Предполагается, что системные администраторы на нашей  и  на
удаленной  машине не забыли правильно описать и проконфигуриро-
вать систему UUCP.



После этого наша машина сможет звонить на  удаленные  машины  и
посылать/забирать оттуда файлы. Для этого мы должны задать:

1. Наше собственное UUCP имя.
2. Имя(имена) удаленной(ых) UUCP системы.
3. Телефонный номер(а), по которому нужно туда звонить.
4. Login и пароль, которые выделены там для нашего uucp-account'а.
5. Порт, к которому подключен наш модем.
6. Наборщик - описание "AT" команд для управления нашим модемом.

Эти данные задаются в нескольких конфигурационных файлах, кото-
рые должны лежать в каталоге /etc/uucp/ (или   /usr/lib/uucp/ ,
или    /usr/lib/uucp/taylor_config  )  (или   в   каком  нибудь
другом, см. man uucp для более точной информации). Это файлы:

Config          #   задает имя нашей машины (и многое другое) ;
Systems         #   описывает удаленные uucp-системы: имя,  но-
                #   мер телефона, uucp-logname, uucp-passwd ;
Devices         #   порты, к которым подключены модемы.
Dialers         #   описывает  модемы-наборщики (систему AT-ко-
                #   манд).
(А в Linux они называются: config, sys, port, dial)

Итак, представим  классический случай. У вас один Hayes-совмес-
тимый  модем  V32/V42bis   на   14400  baud  (GVC,  ZyXEL,  US-
Robotics...), подключенный к последовательному порту /dev/modem
(если у вас  порт называется /dev/contty03, вам никто не мешает
сделать символический  линк  ln  -s /dev/contty03 /dev/modem не
так ли ?). Имя вашего узла fedfuru.

ВНИМАНИЕ.  На большинстве Unix-ов выделены раздельные специаль-
ные файлы для одного и того-же порта: терминальная  линия  (для
подключения  терминала  или  модема, НА который будут звонить -
используется для getty или ttymon), и линия с модемным управле-
нием,  на  выход  -  например, чтоб звонить НАРУЖУ модемом. Эти
специальные файлы и называются по разному, например:

SunOS:   /dev/ttyy01   IN, /dev/ttyz01  OUT
Linux:   /dev/ttyS1    IN, /dev/cua1    OUT
ISC:     /dev/ttyFD01  IN, /dev/ttyFM01 OUT
SVR4/88: /dev/contty00 IN, /dev/??????? OUT

###следующий абзац написан "мелким шрифтом"(можно не читать)###
На самом деле все не совсем так. Цитирую Linux-Serial-HOWTO:
> There has been some discussion  on  the  merits of /dev/mouse
> and /dev/modem. I strongly discourage the use of these links.
> In particular,  if you are planning  on using your  modem for
> dialin you will run into problems because the lock files will
> not work correctly if  you  use /dev/modem. Also, Taylor UUCP
  does not support symlinks either. Однако uugetty позволяет
  корректно отрабатывать эту ситуацию. См. параметр ALTLOCK в
  /etc/defaults/getty файле.
################_конец_"мелкого шрифта"_#######################

  Вам  надо подключиться к двум uucp-узлам:
1: Узел Релком, имя узла kiae, телефоны:  9469984,  9469994. Вы
   зарегистрированы там под именем/паролем uufedurp/ABCd8
2: Ваше  московское  отделение,  имя узла fedfond, телефон 095-
   125-7623.  Вы  зарегистрированы   там   под   именем/паролем
   uufedurp/KLmn10

В каталоге /etc/uucp редактируем файлы Systems, Devices, Dialers

Systems: ------- Удаленные машины -----------------------------
kiae Any modem1 19200 946-9984 "" \n\r\d\r\d\r ogin:-BREAK-ogin:
                                   uufedurp ssword: ABCd8
fedfond Any modem1 19200 8w095-125-7623 "" \n\r ogin:-BREAK-ogin:
                                   uufedurp ssword: KLmn10

Devices: --------------- Описание портов ----------------------
modem1 contty03 - 19200 gvc1440

Dialers: --------------- Команды модемов ----------------------
gvc1440 =,-, "" \M\dATZ\r\c OK\r \EATDP\T\r\c CONNECT \m\c

---------------- Это все --------------------------------------

###следующий абзац написан "мелким шрифтом"(можно не читать)###
А дальше идет описание Taylor-uucp. Проблема в том, что в стан-
дартной поставке SVR4/88 _нет_ Taylor-uucp, а  есть только т.н.
HoneyDanBer-uucp,  он  же  BNU  (Basic  Networking  Utilities).
Taylor новее и гибче, к тому же поддерживает два формата конфи-
гурационных файлов  -  традиционный  (Config, Systems, Devices,
Dialers, ...)  и свой (config, sys, port, dial, ...). Есть кон-
вертер туда-обратно.  В  Linuxе  Taylor-uucp скомпилирован так,
чтобы      сначала       искать      Taylor-конфигурацию      в
/usr/lib/uucp/taylor_config/,  если  там ничего  нет  -  искать
HDB-конфигурацию  в   /usr/lib/uucp/hdb_config/.  IMHO  главный
изъян HDB - невозможность указывать альтернативные номера теле-
фонов.
################_конец_"мелкого шрифта"_#######################

###следующий абзац написан "мелким шрифтом"###
Если вы используете не устаревший BNU-uucp, а Taylor-uucp 1.05:
В каталоге /usr/lib/uucp/taylor_config создаем файлы config,
sys, port, dial следующего содержания:
/* Примечание: в дистрибутивах RedHat Linux конфигурационные файлы
uucp должны лежать в /etc/uucp/ */

config: -------------------------------------------------------
uuname     fedfuru        #  Наше собственное имя

sys: ------- Удаленные машины ---------------------------------
system kiae          # Узел Релком ############################
myname fedfuru
time Any
port  modem         # Имя описания порта в файле port
speed 38400
chat  ogin:-BREAK-ogin: uufedurp ssword: ABCd8
phone 946-9984
alternate            # Второй телефонный номер.
phone  946-9994

system fedfond       # Московское отделение ##################
time Any
myname   fedfuru
port  modem         # Имя описания порта в файле port
speed 38400
chat  ogin:-BREAK-ogin: uufedurp ssword: KLmn10
phone 8w095-125-7623

port: --------------- Описание портов ------------------------
port    modem       # Обозначение порта  из файла   sys
type    modem
device  /dev/modem
speed   38400
dialer  gvc1440      # Имя наборщика-модема в файле  dial

dial: --------------- Команды модемов ------------------------
dialer     gvc1440   # Обозначение наборщика из файла  port

# Строка инициализации модема.
# Вместо \T будет подставлен телефонный номер
chat       "" ATZ OK ATH0E0Q0 OK ATDP\T CONNECT
# ATZ - загрузить profile 0
# ATH0 - повесить трубку
# ATE0 - no echo
# ATQ0 - выводить код возврата

chat-fail  BUSY                # Воспринимать как ошибку набора
chat-fail  ERROR
chat-fail  NO\sCARRIER
chat-fail  NO\sDIALTONE
---------------------------------------------------------------
################_конец_"мелкого шрифта"_#######################

Все.  Клиентская  часть  UUCP  сконфигурирована.  Теперь, чтобы
"протолкнуть"   посланные   файлы,   достаточно    периодически
выполнять команды:

uucico -s kiae
uucico -s fedfond

А  еще  лучше,  добавить  эти  команды  в  crontab,  чтобы  они  выполнялись
автоматически, по несколько раз в сутки.



Все вышеперечисленные настройки можно сделать, используя утили-
ту   системного   администратора  sysadm.  Надо  войти  в  меню
network_services / basic_network



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

1: Иметь  описание звонящей нам uucp-системы в файле Systems  -
   для клиента такое же, как и для сервера.
2: Проверить права доступа для клиента в файле Permitions
2: Завести для него специальный uucp-login
3: Убедиться, что модем стоит в "Auto-answer" режиме, и на порт
   /dev/modem  запущена программа getty (или ttymon), позволяю-
   щая логиниться по телефону на порт /dev/modem

1.  Описание  добавляется  в  файл  Systems,  (номер телефона и
    название   порта   не   обязательны),  если  мы  сами    не
    собираемся туда звонить, но я бы посоветовал их вписать, для
    единообразия.

2. В файле /etc/passwd завести строчку вида:

uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico

   выполнить команды:
pwconv
passwd uupetrov

3. Любой терминальной программой "войти" в модемный порт и  вы-
   полнить команды

atz0         # Загрузить пользовательский profile 0
ats0=1       # Регистр0=1 - снимать трубку после 1-го звонка
at&w0        # Сохранить текущий setup в profile 0
at&y0        # Чтобы при включении питания загружался профайл 0

# at&f       # загрузить заводские установки, если вы запутались
             # с профайлами, можно сделать модему "reset"

Ввиду   отсутствия   коммуникационных   программ   в  SVR4  (за
исключением сумасшедшего "cu"), используйте "echo".

     echo atz0   > /dev/modem
     echo ats0=0 > /dev/modem
     echo at&w0  > /dev/modem         # и так далее

А еще лучше gold, там есть режим прямой связи с любым портом.

4. В файле /etc/inittab иметь строчку вида:

c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem   -l contty




/usr/bin/uucp     - переслать файлы с/на удаленную uucp-систему
/usr/bin/uux      - выполнить команду на удаленной uucp-системе
/usr/bin/uustat   - статистика по выполненным пересылкам

/usr/lib/uucp/uu* - системные утилиты UUCP

/etc/uucp/              - каталог  конфигурационных файлов UUCP

  /usr/lib/uucp/taylor_config    - конфигурация UUCP в Linux
  /usr/lib/uucp/                 - конфигурация UUCP в других
                                   системах

/var/spool/uucppublic     - каталог в который можно  пересылать
                            файлы с удаленных машин

/usr/spool/mqueue         - очереди отправляемой электронной почты
   /usr/ucblib/mqueue     - или здесь эта очередь ?
/var/spool/uucp/"машина"  - очередь файлов на отправку на "машину"
/var/spool/uucp/.Log      - статистика о работе uucp



Если у вас самый простейший случай: вся ваша почта проходит че-
рез один "знающий" host, с которым вы соединены по uucp, то на-
до в файле /etc/sendmail.cf иметь такую строку:

. . .
# "Smart" relay host (may be null)
DSuucp-dom:kiae
. . .

В  этом  случае  вся  ваша  внешняя почта (т.е. отправляемая за
пределы вашей локальной сети) будет переправляться по  uucp  на
uucp-узел  "kiae"  и  дальнейшей  ее  доставкой  будет озабочен
именно kiae. Предполагается, что он успешно  справится  с  этой
задачей.

А  еще  чтобы  было  описание  uucp-dom  (ниже в том же файле).
Кстати, чтобы всех окончательно запутать, sendmail.cf на  Moto-
role лежит вовсе не в /etc/, а в /usr/ucblib/.

Если у вас какой-либо другой случай - то это -  тяжелый случай.
Дерзайте, успехов вам!

# И надо сделать, чтоб сендмаил не отрезал 8-й бит у посылаемой почты
# Если sendmail8.x.x, то в sendmail.cf:
# strip message body to 7 bits on input?
O7False


# А еще бывает, что sendmail не знает, как правильно называется
# наша машина. Тогда мы пишем что-то в таком стиле:

Cwlocalhost feduru.urup.ru feduru.mss.ru



Для начала проверим, правильно ли подсоединен модем.
Запускаем программу cu - эмулятор терминала.

   cu -l /dev/modem    # Или как там у вас этот порт называется

После этого вы  переключитесь на работу со своим модемным  пор-
том.  Все, что вы  будете набирать с клавиатуры, будет перенап-
равляться в порт /dev/modem , все, что "приходит" с  этого пор-
та, будет  рисоваться  на  вашем  терминале. Попробуйте модемом
набрать телефонный номер

   atdp100

Проверьте, правильно  ли сконфигурирован "порт" модема и описа-
ние системы в файле Systems.

   cu pulsar

Проверьте права доступа к файлам /dev/modem, /dev/contty*. Дол-
жно быть (???):

 crw-rw----   1 root     uucp       ...         /dev/contty0
 crw-rw----   1 root     uucp       ...         /dev/modem

Запустите uucico  с  максимальным уровнем выдачи отладочной ин-
формации. Запускать надо из под пользователя uucp

   /usr/lib/uucp/uucico -r1 -x9 -f -s pulsar
   /usr/lib/uucp/uucico -x all -f -s kiae

А затем посмотрите на  содержание  файлов со статистикой uucp в
каталоге /var/spool/uucp :

   .Admin/audit.local
   .Log/
   .Status/
   ERRLOG
   LOGFILE
   SYSLOG

Например, такой командой

   tail -f /var/uucp/.Admin/audit.local &
   tail -f /var/uucp/.Log/uucico/kiae



###следующий абзац написан "мелким шрифтом"(можно не читать)####
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517                  St. Petersburg, Russia
> Навешал фильтров на sendmail, rmail,
> а вот это непонятно. Или они научились все из кои8 в исо пере-
> ворачивать на лету ?

Нет, конечно,  потребовалось  лечить.  Дело сильно упростило то
обстоятельство, что  внутри  сети везде ISO. Перекодировать по-
этому мне надо только то, что идет через UUCP, то  бишь наружу.
Для этого пришлось:

1. Поправить sendmail.cf:

# RelCom UUCP - with ISO 8859-5 to KOI-8 translation
Muucp-koi, P=/usr/local/bin/_uux, F=mDFMhu, S=52/31, R=21, M=100000,
                   ^^^^^^^^^^^^^^^^^^^ мой, см. ниже
           A=_uux - -r -a$f -gC $h!rmail ($u)

2. Сделать /usr/local/bin/_uux из трех строк:
#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/iso-koi | /usr/bin/uux $*

(iso-koi - понятно какой фильтр)

Это все, на самом деле, весьма грязный hack - вряд ли стоит его
включать в учебник. Оно, конечно,  работает,  но  вот  надо  по
крайней  мере еще и правильный код возврата как-то обеспечить -
с проверкой ошибок и прочими фенечками.

     Чтобы принимаемая почта из KOI превращалась в ISO, достаточно:

1. Переименовать rmail в /usr/local/bin/__rmail;
2. Сделать свой rmail, тоже из трех строчек:

#!/bin/sh
PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
/usr/local/bin/koi-iso | /usr/local/bin/__rmail $*

Вышеуказанную экзекуцию  надо производить именно над rmail, по-
тому что rbmail проверяет контрольные суммы.

А вот rbmail в SVR4/88 совсем нет. Надо искать исходники, соби-
рать... А RelCom (по крайней мере  мой  провайдер)  именно  его
пользует. Это  третья  причина  (после отсутствия Taylor-uucp и
удобного Mail-user агентa),  по которой  я  не  стал  поднимать
uucp/e-mail на Motorolе.

--
Dmitry Mayorov Compulsory Health Insurance Fund
Phone: +7 (812) 112-3517                 St. Petersburg, Russia
        -- Конец цитаты --
################_конец_"мелкого шрифта"_#######################

    Solaris: настройка uucp по direct line

В файле Systems на Солярке удаленная машина описывается так: ranisi Any dirt06 9600 unused "" P_ZERO "" \n\c ogin:-\n\c-ogin: uuintra\n\c ssword: parolf9f10\n\c "" P_ZERO По сравнению с нормальным tailor-uucp престарелый соляркин по прямому кабелю выкинул несколько фортелей: Не захотел идти наружу с 38400, пришлось ставить 9600 Посылаемый ^M в конце каждой строки chat-а принимающий Linux понимать отказался, пришлось делать в конце \n\c Работать стал только с насильственно взведенным P_ZERO - "no parity" - без этого на приеме вместо латиницы получалась 8-битная русица. В uucp-овый crontab ставим раз в 5 минут вызов uucico 0,5,10,15,18,20,25,30,35,40,45,50,55 * * * * (\ /usr/lib/uucp/uucico -r1 -f -s ranisi ; sleep 30 ; \ /usr/lib/sendmail -q ) > /dev/null 2>&1 У солярного uucico не оказалось ключа "force" redial (-f - совсем не тот форце, которого хотелось мне)

    Чтоб заставить uucico ходить на телнетовский порт

> в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177} port type pipe port command /bin/telnet -8E hostname

    Secure uucp по tcp

Вариант 1. port type tcp with ssh-port forwarding НА СЕРВЕРЕ: конфигурите uucp-tcp-сервер с localhost /etc/inetd.conf : uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l /etc/hosts.allow : uucico: 127.0.0.1 # uucico желает его читать, а работает он с uid uucp - приходится дать read chmod og+r /etc/hosts.allow /etc/uucp/passwd : propisatx uu-логин, пароль _нешифрованный_ uuyourlogin yourpasswd НА КЛИЕНТЕ: коннект будете делать на localhost, а ssh делает его проброс /etc/inetd.conf : uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/sbin/uucico -l /etc/hosts.allow : uucico: 127.0.0.1 /etc/uucp/port : описать порт tcp-connect port tcp-connect type tcp service 540 /etc/uucp/sys : добавить тип порта . . . port tcp-connect address 127.0.0.1 chat ogin: \L ssword: \P alternate . . . "Перед употреблением" запускаем из под root ssh с активизированным forward ssh1 -C -L 540:127.0.0.1:540 193.232.173.6

Популярность: 17, Last-modified: Mon, 03 Apr 2000 08:38:25 GmT