TOP UNIX-V
DDNOS NOS-2 UNIX-V.1
DOMAIN NTOS UNIX-V.2
DOS OS/DDP UNIX-V.3
EDX OS/2 UNIX-PC
ELF OS4 UNKNOWN
EMBOS OS86 UT2D
EMMOS OSX V
EPOS PCDOS VM
FOONEX PERQ/OS VM/370
FUZZ PLI VM/CMS
GCOS PSDOS/MIT VM/SP
GPOS PRIMOS VMS
HDOS RMX/RDOS VMS/EUNICE
IMAGEN ROS VRTX
INTERCOM RSX11M WAITS
IMPRESS RTE-A WANG
INTERLISP SATOPS WIN32
IOS SCO-XENIX/386 X11R3
IRIX SCS XDE
ISI-68020 SIMP XENIX
ITS SUN
Appendix C Installing DNS on a Sun when running NIS
====================
2) How to get DNS to be used when running NIS ?
First setup the appropriate /etc/resolv.conf file.
Something like this should do the "trick".
;
; Data file for a client.
;
domain local domain
nameserver address of primary domain nameserver
nameserver address of secondary domain nameserver
where: "local domain" is the domain part of the hostnames.
For example, if your hostname is "thor.ece.uc.edu"
your "local domain" is "ece.uc.edu".
You will need to put a copy of this resolv.conf on
all NIS(YP) servers including slaves.
Under SunOS 4.1 and greater, change the "B=" at the top
of the /var/yp/Makefile to "B=-b" and setup NIS in the
usual fashion.
You will need reboot or restart ypserv for these changes
to take affect.
Under 4.0.x, edit the Makefile or apply the following "diff":
*** Makefile.orig Wed Jan 10 13:22:11 1990
--- Makefile Wed Jan 10 13:22:01 1990
***************
*** 63 ****
! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byname; \
--- 63 ----
! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byname; \
***************
*** 66 ****
! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
--- 66 ----
! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byaddr; \
====================
--
Craig Richmond. Computer Officer - Dept of Economics (morning) 380 3860
University of Western Australia Dept of Education (afternoon) 2368
craig@ecel.uwa.edu.au Dvorak Keyboards RULE! "Messes are only acceptable
if users make them. Applications aren't allowed this freedom" I.M.VI 2-4
.
&dDUUCP - Unix to Unix Copy&d@
Система пересылки файлов по телефону.
Если 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.
&dDКонфигурация нашей машины как UUCP клиента.&d@
После этого наша машина сможет звонить на удаленные машины и
посылать/забирать оттуда файлы. Для этого мы должны задать:
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, чтобы они выполнялись
автоматически, по несколько раз в сутки.
&dDКонфигурирование UUCP с использованием sysadm&d@.
Все вышеперечисленные настройки можно сделать, используя утили-
ту системного администратора sysadm. Надо войти в меню
network_services / basic_network
&dDКонфигурирование серверной части UUCP.&d@
Итак, мы уже можем звонить на чужие машины, и пересылать на них
файлы. Теперь нужно сделать, чтобы чужие машины (клиенты) могли
звонить нам. Для этого нужно:
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
&dDЧто где лежит в системе UUCP.&d@
/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
&dDОсталось настроить нашу электронную почту.&d@
Если у вас самый простейший случай: вся ваша почта проходит че-
рез один "знающий" 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
&dDПроверка работоспособности и отладка конфигурации.&d@
Для начала проверим, правильно ли подсоединен модем.
Запускаем программу 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
&dDПо результатам переписки&d@.
###следующий абзац написан "мелким шрифтом"(можно не читать)####
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
-- Конец цитаты --
################_конец_"мелкого шрифта"_#######################
&dDSolaris: настройка uucp по direct line&d@
В файле 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 -
совсем не тот форце, которого хотелось мне)
&dDЧтоб заставить uucico ходить на телнетовский порт&d@
> в логах наблюдается откровенный мусор: \177}\030\177} \177}#\177}
port type pipe
port command /bin/telnet -8E hostname
&dDSecure uucp по tcp&d@
&dDВариант 1. port type tcp with ssh-port forwarding&d@
НА СЕРВЕРЕ: конфигурите 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
.
&dDСистема печати в Unix. LP spoolling&d@
(описана система печати в System V)
Печатать, конечно, можно и так: cat file > /dev/lp. Но в
многопользовательской системе такой фокус не всегда пройдет.
Поэтому печатаемый файл ставят в очередь на печать.
Имеем принтер. У принтера есть
ИМЯ_ПРИНТЕРА - придумывается администратором.
ПОРТ_ПРИНТЕРА - специальный файл в который надо
выталкивать данные для печати.
ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и
будет этим заниматься.
Если у нас нормально сконфигурена система печати, то
печататься можно так:
lp -d ИМЯ_ПРИНТЕРА file
или, если мы хотим напечатать на "default" принтере
cat file | lp
lpstat Посмотреть в каком состоянии очередь печати
cancel [идентификатор_запроса ...] [принтер ...]
Срубить запрос на печать
lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ
lpsched обнаруживает вновь поступивший файл, ставит его в
очередь на печать, и, когда очередь доходит, запускает наконец
ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого
файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.
&dDПодключить к системе новый принтер&d@
---------------------------------------------------------------
lpshut # на время реконфигурации надо "гасить" lpsched
lpadmin -pLJ_printer -i/usr/lib/lp/model/lj_print -v/dev/lpt2
или
lpadmin -pNash_Nowyj_Printer -mstandard -v/dev/contty
enable Nash_Nowyj_Printer
accept Nash_Nowyj_Printer
lpsched # после реконфигурации надо вновь запустить lpsched
---------------------------------------------------------------
accept - позволяет ставить в очередь печать на этом принтере
enable - разрешает печатать стоящие в очереди задания
ключи команды lpadmin
-pИмя_Нового_Принтера
-vПОРТ_ПРИНТЕРА
-iИНТЕРФЕЙСНАЯ_ПРОГРАММА - маршрутное имя программы,
которая печатает
-mМОДЕЛЬ_ПРОГРАММЫ - имя "модели" такой программы,
лежащей в каталоге
/usr/lib/lp/model
-o nobanner - разрешить userу писать lp -o nobanner
(рекомендую ампутировать banner в интерфейсном скрипте)
-d printer - сделать принтером по умолчанию
-?Удаленный_хост - можно подключать принтер удаленной машины
-?Имя_принтера_на_удаленном_хосте
(ключи не помню, посмотреть в man)
-s host!printer - для Solaris - подключение удаленного принтера
# перед этим вписать принтер в /etc/lp/Systems
Вместе с системой накопления вывода на принтеры
поставляются образцы интерфейсных программ. Они представляют
собой shell-процедуры, перекодирующими печатаемый файл в формат
соответствующего принтера.
&dDПримеры&d@
lpadmin -pstar1 -i/udd/print/inter -v/dev/xpit0 # локальный принтер
lpadmin -pstar1 -mdumb -v/dev/lpt1
&dDПодключить к системе удаленный принтер&d@
(ключи варьируются для разных версий Unix)
HP-UX:
lpadmin -pLJ_printer -?host -?printer
Solaris:
вписать удаленную машину в /etc/lp/Systems а затем
lpadmin -pLJ_printer -s 'host!printer' ; accept LJ_printer
lpadmin -dstar1 # Установить принтером по умолчани`
lpadmin -xstar1 # Ликвидировать принтер star1
&dDФайлы&d@
/usr/lib/lp/model # Образцы интерфейсных программ (модели)
/etc/lp # Каталог конфигурации системы LP
/var/spool/lp/* # Каталоги с очередями
man lpadmin # Естественно!
.
&dDГрафическая оболочка X-Windows System&d@
Для начала немного истории и общих мест. Представим, что
нам нужно написать программу, которая будет работать в
графическом режиме. Нам потребуется: опрашивать клавиатуру,
снимать события и координаты мыши, рисовать на экране, ... Как
это делалось на MS-DOSе? Очень просто. Пишем одну большую
программу, в ней - все: и логика, и обработка событий, и
слежение за перемещениями мыши, ну, а когда требуется что-то
нарисовать, мы даем команду на запись в порты EGA контроллера,
рисуем пиксел... Через год появляется контроллер VGA, еще через
год SVGA 800x600, 16 цветов, вслед за ним UVGA 1024x768, 256
цветов, затем XGA 1280x1024, 16Мб цветов...
&dDОсновная идея X Windows&d@.
Имеем две независимых программы. Одна умеет рисовать на
графическом мониторе, и вообще, обслуживать все это железо. Она
называется X-сервер. Вторая программа - называем ее клиент X
Windows, рисовать физически не умеет. Зато она знает, что
именно надо рисовать, и умеет командовать. Команды типа:
"нарисовать прямоугольник", "провести линию", "открыть окно",
"вывести символ в заданном фонте", "опросить координаты мыши",
и т.п. передаются X-серверу, а тот их исполняет - рисует.
Формат и спецификации этих команд опубликованы,
стандартизованы, и широко известны. Все вместе они называются
"Протокол X Windows".
Итак, повторим.
X-сервер. Программа, которая написана специально под
конкретное физическое устройство (имеется в виду - монитор,
графконтроллер, мышь и клавиатура), умеет на нем рисовать, и
умеет понимать команды рисования по протоколу X Windows System.
X-клиент. Прикладная программа, обеспечивающая графический
интерфейс с пользователем. Команды для рисования на экране
передает X серверу по протоколу X Windows System.
X-терминал. Ящик (монитор, графконтроллер, мышь,
клавиатура, ну и, естественно, процессор и оперативная память),
на котором запущена программа X-сервер. X-терминалом может
служить самая обыкновенная графическая Unix-рабочая станция, на
которой X сервер выполняется, как одна из многих прикладных
задач. Специализированный X-terminal - ящик, на котором
запускается только X сервер, и ничего кроме. Можно использовать
PC под MS-DOSом, на котором запущена DOSовская программа,
реализующая X сервер.
Xlib - библиотека C-ишных функций, реализующих протокол X
Windows System. С помощью этой библиотеки можно писать
графические программы - X-клиенты.
Что мы с этого имеем.
Мы получаем универсальный GAPI - (Graphical Application
Programming Interface) - средство программирования графических
приложений. Пользовательские графические программы при этом
полностью отвязаны от железа, от конкретного графконтроллера.
О железе пусть беспокоится X-сервер.
Протокол X Windows умеет "ездить" по сети: например по TCP/IP,
или по DEC-net. Поэтому Xсервер может крутиться на одной
машине, а X-клиент - на другой. То есть, картинка рисуется на
одной машине, а программа, которая ее обеспечивает - крутится
на другой.
X-сервер способен обслуживать сразу много клиентов, причем всех
- одновременно. На нашем графическом экране может быть открыто
сразу много окон - каждое окно порождается его собственным X
клиентом. Клиенты эти могут быть запущены и на нашей машине (к
которой подключена графическая подсистема), и на удаленных ма-
шинах, соединеннных с нами по сети.
Чего нам это стоит.
Понятно чего. Ресурсов. X Windows очень любит ресурсы - память,
процессор, диск. Способен съесть их в неограниченных количес-
твах. А еще ведь надо программировать. (К счастью, не всем на-
до). Кто видел, как выглядят программы для MS Windows или Mac,
может представить себе внешний вид исходных текстов X-овой
программы.
&dDКак это запускается&d@.
Пусть в нашей сети есть машина с графической подсистемой и X
сервером, и сетевой адрес этой машины pcat107.foms.msk.ru
на pcat107 нужно выполнить команду:
xhost + # разрешить X-овым программам с ЛЮБОЙ машины
# рисовать на экране машины pcat107
Запускаем на нашем компьютере X-овую программу, так, чтобы ее
окошко рисовалось на мониторе pcat107. Для этого на нашем
компьютере нужно выполнить команду:
xterm -display pcat107:0.0 &
&dDБиблиотеки, Motif, и война круглых и квадратных кнопок&d@.
Можно писать X-овые программы, используя библиотеку Xlib.
Многие так и пишут, хотя это весьма тяжело - уж больно невысок
уровень Xlib'а. В помощь программистам было создано несколько
toolkit'ов - библиотек более высокого уровня, в которых реали-
зованы различные widget'ы. Widget - непереводимый термин X
Windows. Склеен из двух слов - Window и Gadget
(приспособление), является графическим объектом с привязанными
к нему свойствами и реакциями на действия пользователя. Примеры
widgetow: "кнопка", "менюшка", "окошко с текстом", "линейка
прокрутки",...
Известны следующие toolkit'ы:
Xaw -
Anthena Widgets. Очень черно-белый, очень плоский,
весьма небогатый. Зато - бесплатный. Посмотрите, как
выглядят программы xterm, xedit, xman. Они сделанны
на Xaw.
xview -
Набор библиотек и объектов, использованных в реализа-
ции набора пользовательских утилит Sun-овской версии
X Windows - "Open Windows". Весьма симпатично. Круг-
лые кнопки, "шприцы-иголки" (замечательная вещь!),
очень хорошо продуманный интерфейс пользователя, в
том числе активно используемая трех-кнопочная мышь.
Исходные тексты библиотек xview открыты, предоставля-
ются бесплатно. Однако набор DeskSet - 15 пользова-
тельских утилит входящих в OpenWindows, сделанный на
библиотеке xview, SunSoft готов предоставить только
за плату. В бинарном виде - весьма дешево ($100). В
исходных текстах - весьма дорого ($200K)
Motif -
Библиотека поставляются организацией OSF за не совсем
маленькую плату. Исходные тексты библиотек недоступ-
ны, либо чрезмерно дороги. Кнопки - квадратные, да и
вообще Motif'овские приложения до безобразия напоми-
нают MS Windows (что, IMHO, является серьезным прес-
туплением)
В борьбе BSD и Unix V победил, как известно, System V, а в вой-
не круглых и квадратных кнопок выиграл Motif.
&dDКонфигурирование X Windows&d@
В Linux используется X11 в реализации XFree86.
Чтобы его сконфигурировать, выполните команду
xf86config
&dDЗапуск X Windows&d@.
На некоторых машинах он сам запускается. А также иногда
удается запустить его вручную командами: startx и/или openwin
Solaris:
1. Установите переменные окружения:
OPENWINHOME=/usr/openwin export OPENWINHOME
LD_LIBRARY_PATH=/usr/openwin/lib export LD_LIBRARY_PATH
PATH=/usr/openwin/bin:$PATH export PATH
XAPPLERESDIR=/usr/openwin/lib/app-defaults export XAPPLERESDIR
2. Запустите X Windows командой
openwin
"Нормальные" Unix'ы:
1. Установите переменные окружения:
PATH=/usr/bin/X11:$PATH
XAPPLERESDIR=/usr/lib/X11/app-defaults
2. Запустите X Windows командой
startx
"Ненормальные" Unix'ы (Unixware).
Когда регистрируете пользователя, ответьте Yes на вопрос
"Хотите графический DeskTop". Тогда после login'а X Windows
будет запускаться автоматически. Если вы прозевали, и ответили
No, то никаким осмысленным способом запустить X Windows для
себя вам не удастся.
&dDНастройки пользовательского окружения X Windows&d@
При наличии пользовательских настроечных файлов, лежащих в
домашнем каталоге пользователя, используются они. Если их нет,
используются стандартные, общественные, обычно лежащие в
каталоге /usr/lib/X11 или /usr/openwin/lib
Персональные и общественные пользовательские настройки
хранятся в файлах:
$HOME/.Xdefaults
$HOME/.OWdefaults
/usr/lib/X11/Xdefaults
/usr/openwin/lib/Xdefaults
/usr/openwin/lib/app-defaults/*
После любых исправлений файл с ресурсами необходимо перезачитать:"
xrdb -merge .Xdefaults
Окружение (desktop) - т.е. программы, которые стартуют
автоматически при запуске X Windows находится в файлах:
Solaris:
$HOME/.openwin-init
/usr/openwin/lib/openwin-init
"Нормальнные" X windows:
$HOME/.xinitrc
/usr/lib/X11/xinit/xinitrc
Настройки window-manager'a - т.е. - поведение окон,
менюшки пользователя, раскладка команд на клавиши мышки, ...
Solaris:
$HOME/.openwin-menu
$HOME/.openwin-menu-*
/usr/openwin/lib/openwin-menu
/usr/openwin/lib/openwin-menu-*
Linux
$HOME/.fvwmrc
/usr/lib/X11/fvwm/system.fvwmrc
.
&dDРедактор VI. Список команд&d@
&dDРЕЖИМЫ&d@: Ввода == ESC ====> Командный == :Q ==> Редактора ed
^ | ^ |
+----aAiIcCrRs <---+ +----- vi -------+
&dD &d@ &dDПЕРЕМЕЩЕНИЕ ПО ФАЙЛУ&d@
{стрелки},hjkl
^U/^D табуляция вверх/вниз
^F/^B страницу вниз/вверх
^E/^Y подвинуться на строку вниз/вверх
w/b/e вперед/назад на слово/в конец слова
W/B/E вперед/назад на слово/в конец опробеленного слова
(/) назад/вперед на предложение
{/} назад/вперед на абзац
[[/]] назад/вперед на функцию или секцию
% найти парную скобку ( или {
{n}G на строку {n}
{n}| в колонку {n}
H/M/L в начало/середину/конец экрана
z/z./z- текущую строку в начало/середину/конец экрана
^/$/0 начало/конец строки
&dD &d@ &dDРЕДАКТИРОВАНИЕ ТЕКСТА&d@
x уничтожить символ
X забой
J склеить строки
&dD &d@ &dDВ РЕЖИМЫ ВВОДА&d@
a/i / A/I вставка за/перед _ / концом/началом строки
R режим замены
r буква на букву
s буква на буквы
o/O вставить строку под/над _
C$ Заменить конец строки
&dD &d@ &dDИНФОРМАЦИЯ&d@
^G о текущем файле и строке
&dD &d@ &dDОТКАТКА&d@
u откатка (одна)
^L/^R перерисовать
&dD &d@ &dDРЕДАКТИРОВАНИЕ В РЕЖИМЕ ВВОДА&d@
ESC вернуться в командный режим
Забой Забой
^W/^U Убрать слово/Убрать строку
^V Вставить CRTL-символ[ы]
&dD &d@ &dDОПЕРАТОРЫ С ПОЗИЦИОНИРОВАНИЕМ&d@
p/P вспомнить фрагмент за/перед _
{n} ["буква_буфер] "команда" {m}"команда позиционирования"
весь фрагмент запоминается! или повтор команды для строки
d уничтожать фрагмент
y запоминать фраг
c заменить фрагмент (==> в режим ввода )
&dD<&d@/&dD>&d@ сдвинуть влево/вправо
! команда пропустить фрагмент через фильтр
&dD &d@ &dDПРИМЕРЫ&d@
7yy запомнить 7 строк в неименованном буфере
"aAd{ добавить к буф a с удалением от _ до начала абзаца
!G sort отсортировать строки от курсора и до конца
&dD &d@ &dD"МАКРОКОМАНДЫ"&d@
:map клавиша_имя_макро тело_макрокоманды {CR}
:map! клавиша_имя_макро тело_макрокоманды {CR} - в режиме ввода
:ab сокращение сокращаемый_текст {CR} - в режиме ввода
&dD &d@ &dDПОИСК&d@
?строка искать вверх
/строка искать вниз
n повторить поиск
N вернуться на последнюю найденную строку
&dD &d@ &dDПОИСК_С_ЗАМЕНОЙ&d@
:s/рег_выраж/замена/gc - глобальный с подтверждением
:Q/vi вход / выход в режим ed
:g/строка - поставить визуальный фильтр
:+5 движение по файлу
&dD &d@ &dDРЕДАКТОР_ED. Вход ":" (надолго "Q") Выход "CR" / (VI)&d@
^^ Перейти в альтернативное окно
:[1,$] w [>>] [file] записать в file [от 1 до $ строки]
:q[!] закончить сеанс [форсированно]
:[15]r [file] или [!komanda] вставить после [15] стр
:e редактировать новый файл
:n редактировать следующий файл
:sh выйти в Shell
:! команда запустить на выполнение Shelloм
&dD &d@ &dDУСТАНОВКА РЕЖИМОВ VI&d@
:set nu / nonu нумеровать/ненумеровать строки
:set smd{CR} показывать текущий режим
EXINIT="конфигурационные команды" - переменная окружения
.exrc - файл с командами конфигурации
.
&dDКак подключить русские фонты к компьютеру с X11&d@
1. Создаем каталог cyrfonts. Копируем туда файлы *.bdf или *.pcf
mkdir cyrfonts
cp *.bdf *.pcf cyrfonts
Замечание: предпочтительно добыть фонты в формате PCF а не
BDF Проблема в том, приложение заказывает размер фонта,
которого у X или FONT-сервера нет, то FONT-сервер пытается
скалировать и в случае .BDF погибает и убивает все, что под ним
запущено. Конвертировать bdf-фонты можно командой bdftopcf.
2. В каталоге с фонтами создаем оглавление фонтов для
X-server'а : fonts.dir
cd cyrfonts
mkfontdir
3. Указываем X-server'у, чтоб он брал фонты из нашего каталога
xset +fp $HOME/cyfonts
xset fp rehash
4. Пользуемся русскими фонтами.
xterm -fn koi9x15
mailtool -fn koi6x10
и т.д.
&dDЧтобы русские фонты включались и находились по умолчанию&d@
5. До запуска X-Windows установить переменную окружения FONTPATH
Если у вас Bourne Shell /bin/sh или bash или ksh
FONTPATH=$HOME/cyrfonts: export FONTPATH
Если судьба угораздила пользоваться C-Shell /bin/csh или tcsh
setenv FONTPATH $HOME/cyrfonts:
6. Или скопировать фонты в директорию со стандартными фонтами.
cp *.bdf /usr/lib/X11/fonts/misc
cd /usr/lib/X11/fonts/misc
mkfontdir
xset fp rehash
7. Если у вас XFree, то добавить строчку в файл /etc/X11/XF86Config
FontPath "/home/yourname/cyrfonts/"
8. Установить фонт по умолчанию в своем .Xdefaults файле.
Добавить в файл .Xdefaults такие строчки:
font.name: koi9x15
icon.font.name: koi6x10
XTerm*font: koi6x10
XTerm*VT100*font1: koi6x10
XTerm*VT100*font2: koi8x13
XTerm*VT100*font3: misc16
XTerm*VT100*font4: misc24
XTerm*VT100*font5: demos8x14
XTerm*VT100*font6: demos8x16
emacs.font: koi9x15
emacs.default_font: koi9x15
&dDЕсли у вас SunOs 4.1.1 и, соответственно, NeWS&d@
Тогда вся вышеописанная процедура не сработает. У NeWS
совершенно собственный формат фонтов.
1. Преобразуем фонты в формат NeWS
convertfont *.bdf
2. Создаем оглавление для NeWS server'а
bldfamily
3. Подключаем фонты в точности, как в стандартном X11
xset +fp `pwd` # Дополняем каталог, подключаем фонты.
xset fp rehash # Чтоб сервер перезачитал каталоги с фонтами
все.
Еще можно в файл Synonims.list воткнуть строчку с aliaсами.
Иначе фонты будут браться только по имени файлов.
&dDРедактирование фонтов.&d@
Некоторые комплектты X-Windows имеют редактор фонтов. Он может называться
xfed, fontedit, xfd. Если у вас такового нет, попробуйте найти исходники.
xfed font.bdf
convertfont -v font получаем font.vfp
fontedit font.vfp
затем convertfont -b ?? font.vfp и получаем font.ff
&dDПодключение русской клавиатуры в X-Windows&d@
Достаньте файлы с раскладкой клавиатуры. (Их можно найти во
многих местах, в частности здесь). Выполните команду
xmodmap файл-с-раскладкой.xmm
Переключатель рус/лат - клавиша CapsLock
Чтобы отключить русскую клавиатуру, выполнитте команду
xmodmap default.xmm
&dDПодключение русской клавиатуры в XFree86&d@
XF86Config:
Section Keyboard
LeftAlt Meta
AltGr ModeShift
Right_Ctl ModeLock
ScrollLock ScrollLock
EndSection
Вешает переключатель на правый Ctrl, при этом еще и лампочка
CapsLock будет загораться.
&dDПереключатель кирилицы в XFree86 3.2.2&d@
В свежей версии Xfree_3.3.2