Новые книги

«Кибернетика» — известная книга выдающегося американского математика Норберта Винера (1894—1964), сыгравшая большую роль в развитии современной науки и давшая имя одному из важнейших ее направлений. Настоящее русское издание является полным переводом второго американского издания, вышедшего в 1961 г. и содержащего важные дополнения к первому изданию 1948 г. Читатель также найдет в приложениях переводы некоторых статей и интервью Винера, включая последнее, данное им незадолго до смерти для журнала «Юнайтед Стэйтс Ньюс энд Уорлд Рипорт».

Книга, написанная своеобразным свободным стилем, затрагивает широкий круг проблем современной науки, от сферы наук технических до сферы наук социальных и гуманитарных. В центре — проблематика поведения и воспроизведения (естественного и искусственного) сложных управляющих и информационных систем в технике, живой природе и обществе. Автор глубоко озабочен судьбой науки и ученых в современном мире и резко осуждает использование научного могущества для эксплуатации и войны.

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

Книга для всех, кто задумывается, нужен ли ему лично или компании блог. Для тех, кто уже ведет дневник и хочет большей популярности. Для частных лиц и людей бизнеса, мечтающих о влиянии на интерактивных потребителей.

UUCP - Unix to Unix Copy


UUCP - Unix to Unix Copy

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

Если 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.

Конфигурация нашей машины как 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 не так ли ?). Имя вашего узла fedf-uru.

ВНИМАНИЕ. На большинстве 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 следующего содержания:

config:


 
hostname     fedf-uru        #  Наше собственное имя

sys: Удаленные машины



system kiae          # Узел Релком ############################
time Any
port  modem1         # Имя описания порта в файле port
speed 38400
chat  "" \r\d ogin:-BREAK-ogin: uufedurp ssword: ABCd8
phone 946-9984
alternate            # Второй телефонный номер.
phone  946-9994
system fedfond       # Московское отделение ##################
time Any
port  modem1         # Имя описания порта в файле port
speed 38400
chat  "" \n\r ogin:-BREAK-ogin: uufedurp ssword: KLmn10
phone 8=095-125-7623

port: Описание портов



port    modem1       # Обозначение порта  из файла   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, чтобы они выполнялись автоматически, по несколько раз в сутки.

Конфигурирование UUCP с использованием sysadm.

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

Конфигурирование серверной части UUCP.

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

  1. Иметь описание звонящей нам uucp-системы в файле Systems - для клиента такое же, как и для сервера.
  2. Проверить права доступа для клиента в файле Permitions
  3. Завести для него специальный uucp-login
  4. Убедиться, что модем стоит в "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

Что где лежит в системе UUCP.

  • /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 лежит вовсе не в /etc/, а в /usr/ucblib/.

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

# И надо сделать, чтоб сендмаил не отрезал 8-й бит у посылаемой почты
# Если sendmail8.x.x, то в sendmail.cf:
# strip message body to 7 bits on input?
O7False
# А еще бывает, что sendmail не знает, как правильно называется
# наша машина. Тогда мы пишем что-то в таком стиле:
Cwsystud.ras.ru
Cwserver.systud.ras.ru
Cwlocalhost

Проверка работоспособности и отладка конфигурации.

Для начала проверим, правильно ли подсоединен модем. Запускаем программу 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
    

[Назад] [Содержание] [Вперед]