Сети NetWare 3.12-4.1.Книга ответов

         

Обеспечение комфортных условий работы в сети



9. Обеспечение комфортных условий работы в сети

Для создания комфортных условий работы в сети NetWare имеет набор специальных средств. Настройку сетевого окружения при входе в сеть осуществляет автоматически выполняемая процедура регистрации, называемая также сценарием входа или Login Script.
Работу с сетевыми ресурсами, которую можно выполнять разными способами с помощью множества утилит NetWare, облегчает утилита NMENU.EXE (MENU.EXE в старых версиях NetWare), позволяющая использовать системы меню, ориентированные на потребности конкретных пользователей конкретной сети.



Администратор все время "улучшает"



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

Выход есть - заведите себе на диске файл с текстом необходимой процедуры, и запуская LOGIN, ссылайтесь прямо на него командой, аналогичной

LOGIN /S OUR_SERV/SYS:USERS\MIK\LOGIN.TXT MIK

Правда, при этом вы можете пропустить какую-либо важную информацию, которую администратор хотел донести до всех.



Что означает сообщение "Missing command name"?



Что означает сообщение "Missing command name"?

Это сообщение появляется, если в процедуре регистрации есть строка с префиксом внешней команды "#", а самого имени команды нет. Уберите лишний префикс, или впишите недостающее имя команды.



Что означает сообщение "Your login



Что означает сообщение "Your login script file has beeen locked too long by another station" как быть в этом случае?

Это ситуация, когда вы пытаетесь зарегистрироваться в то время, когда другой пользователь редактирует ваш файл LOGIN обычным текстовым редактором. Некоторое время безрезультатно подождав, утилита LOGIN исполнит для вас свой сценарий по умолчанию. После этого вам на первом поисковом диске (скорее всего Z:) будет доступен каталог SYS:PUBLIC, в котором есть утилита SESSION. Она поможет спланировать необходимые диски, но если ваша процедура производила еще какие-либо настроечные действия, их придется выполнять вручную. Если потери велики, подскажите вашему администратору (очевидно это он занял файл LOGIN), как копировать блоки редактором SYSCON, именно неочевидность способа копирования обычно отвращает администратора от штатных средств.
А если такое случается часто, см. ответ на следующий вопрос.





Где находятся процедуры регистрации и почему они могут быть недоступны?



Где находятся процедуры регистрации и почему они могут быть недоступны?

В NetWare 3.x и младше системная процедура задается файлом NET$LOG.DAT каталога SYS:PUBLIC. Для ее выполнения клиентам необходим доступ к этому каталогу (или хотя бы файлу) с правами R, F; для возможности одновременной регистрации нескольких пользователей файл имеет атрибут разделяемости S. Процедура пользователя задается файлом LOGIN его личного почтового каталога, к которому также необходим доступ с правами R, F. При наличии прав процедура может долгое время быть недоступной (о чем появляется сообщение при выполнении LOGIN), если ее файл кто-либо редактирует обычным текстовым редактором. Этого не происходит, если процедуры редактируются штатными средствами SYSCON.

В NetWare 4.x ни одна процедура не является ASCII-файлами, все они "живут" внутри базы данных Каталога, и вопросы их недоступности и способа редактирования снимаются.



Имена групп, отличающиеся одним



Имена групп, отличающиеся одним символом, некорректно отрабатываются оператором IF MEMBER OF, что делать?

Эта известная ошибка NetWare 4.0 исправлена в "заплатке" LOG412.EXE, содержащей утилиту LOGIN.EXE. Ее нужно установить в каталоги SYS:LOGIN и SYS:PUBLIC на всех серверах сети.



Как определять переменные окружения DOS в процедуре регистрации?



Как определять переменные окружения DOS в процедуре регистрации?

Для этого существует команда DOS SET (можно просто SET), работающая как и в DOS, но имеющая некоторые особенности: значения, присваиваемые переменным, указываются в кавычках; возможно использование переменных процедуры регистрации.

Если переменная нужна только в процессе выполнения процедуры, используйте команду TEMP SET - при этом не нагружается среда окружения (DOS Environment).



Как отлаживается процедура регистрации?



Как отлаживается процедура регистрации?

К сожалению, специальных средств нет, и отлаживать приходится экспериментальными методами. Для этого удобно иметь рядом две станции, на одной из которых, зарегистрировавшись с нужными правами, редактировать процедуры не выходя из сети, чтобы не попасть в случайно получившуюся ловушку. Другую станцию используйте для входов под отлаживаемым именем и проверки действий процедуры. При отладке полезно разрешать сообщения о назначениях и ошибках планирования (MAP DISPLAY ON, MAP ERRORS ON). В качестве отладочных средств можно временно вставлять команды PAUSE, MAP для проверки назначений в текущей точке процедуры, WRITE для определения текущего местоположения, EXIT для отсечения неотлаженного "хвоста", GOTO для обхода сомнительных мест. В случае применения условных операторов IF THEN ELSE END следите за закрытием этих конструкций.



Как редактировать процедуры регистрации?



Как редактировать процедуры регистрации?

Штатным средством редактирования является встроенный редактор в SYSCON NetWare 3.x и младше, в NetWare 4.x - только NWADMIN или NETADMIN. Эти редакторы имеют ограниченные возможности и своеобразный интерфейс, к которому нужно привыкнуть. При создании новых процедур на "голом месте" они предлагают для начала скопировать чью-либо процедуру (конечно, в пределах отпущенных прав). Они позволяют копировать и переносить блоки текста как в пределах одной процедуры, так и между различными процедурами с помощью своего буфера обмена, но это надо уметь. Делается это следующим образом.

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

Для копирования блока после нажатия Delete сразу нажимайте Insert.

Остальные действия не отличаются от обычных редакторов. Редактор NWADMIN взаимодействует и со стандартным буфером обмена Windows.

Преимущество штатных средств в том, что они не захватывают файл (см. предыдущий вопрос) и имеют Help (F1) со шпаргалкой по командам процедур, но копировать образцы из страниц Help, к сожалению, невозможно.



Как синхронизировать пароли на серверах NetWare 3.x?



Как синхронизировать пароли на серверах NetWare 3.x?

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

Пароли могут не переустановиться на других серверах, если вы не имеете права на переустановку или новый пароль не удовлетворяет требованиям к паролю вашего бюджета на этом сервере.



Как создаются процедуры регистрации?



Как создаются процедуры регистрации?

В NetWare 3.x и младше штатный способ создания процедур - утилита SYSCON, позволяющая создавать и редактировать системный и индивидуальные пользовательские сценарии (см. следующий вопрос). Возможно и применение любого текстового редактора, для чего нужно знать местоположение файла и возможные последствия захвата файла (см. выше). Для массового создания пользователей и их процедур применимы утилиты MAKEUSER и USERDEF.

В NetWare 4.x выбор средств создания ограничен утилитами NETADMIN (DOS) или NWADMIN (Windows). Для вновь создаваемых пользователей удобно применять назначение процедуры шаблону, по которому создается данный пользователь. Тогда его личная процедура будет копией этой заготовки, и впоследствии личную процедуру можно будет при необходимости скорректировать.



Как упростить текст сложной процедуры регистрации и облегчить ее отладку?



Как упростить текст сложной процедуры регистрации и облегчить ее отладку?

Если предположить, что функционально вашу процедуру уже не упростить, то можно рекомендовать несколько способов улучшения ее для упрощения и облегчения отладки.
В переменных условных операторов старайтесь использовать по возможности более крупные категории - группы, контейнеры и т.п, это сокращает объем перечислений.
Избегайте лишних условных конструкций для команд MAP, пользуясь тем, что останется действие последней команды - см. пример, в котором оба варианта приведут к одинаковому результату, поскольку каталог с длинным именем SUPERVISOR обычно не создают:

IF LOGIN_NAME=SUPERVISOR THEN
MAP G: = SYS:USERS/%LOGIN_NAME
MAP G: = SYS:SYSTEM
ELSE
END

MAP ERRORS OFF
MAP G: = SYS:SYSTEM
MAP G: = SYS:USERS/%LOGIN_NAME
MAP ERRORS ON

Используйте INCLUDE, особенно когда в условную конструкцию надо включить сложную последовательность действий - это облегчит и читаемость, и отладку.
Используйте (где не нужно использовать переменные) DISPLAY и FDISPLAY вместо WRITE для вывода многострочных сообщений.
Не пренебрегайте комментариями, их включение все-таки экономит время.



Какие значения получают переменные %0, %1, %2 и т. д., используемые в процедуре регистрации.



Какие значения получают переменные %0, %1, %2 и т. д., используемые в процедуре регистрации.

Для ответа на этот вопрос создайте несложный тестовый файл, текст которого приведен ниже, запишите его на любой доступный диск (например, A:) и выполните команду

F: LOGIN /SА : \TESTVAR SUPERVISOR V1 V2 V3

Вы получите следующие сообщения, отвечающие на данный вопрос:

Login_name: SUPERVISOR
Var0:
Var1: SUPERVISOR
Var2: V1
Var3: V2

Если вы попробуете вариант запуска

F: LOGIN

а на запрос имени ответите

/SA: \TESTVAR SUPERVISOR V1 V2

то получите тот же результат. Если вы вводите имя пользователя с именем сервера, то переменным LOGIN_NAME и %1 все равно присваивается только имя регистрации.

Текст файла TESTVAR:

WRITE "Login_name: %LOGIN_NAME."
WRITE "Var0:%0"
WRITE "Var1:%1"
WRITE "Var2:%2"
WRITE "Var3:%3"

Этот тест показывает, что переменная %0 не определяется, а в %LOGIN_NAME попадает не усеченное имя (хотя некоторые источники утверждают, что в %0 попадает имя пути к утилите LOGIN, а LOGIN_NAME усекается до 8 символов).
В Windows95 закладка "Advanced" в Novell Client-32 позволяет задавать значения переменных %2, %3, %4, %5 (%1 = LOGIN_NAME задается в основном окошке).



Какими принципами следует руководствоваться, проектируя процедуры регистрации?



Какими принципами следует руководствоваться, проектируя процедуры регистрации?

Для начала сформулируйте преследуемые цели.

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

Администратору процедура нужна для централизованного управления рабочей средой несамостоятельных пользователей и передачи информации (справочной и объявлений).

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

Планируя процедуры, исходите из принципов разумной достаточности. Если процедура очень длинная (по времени выполнения), у пользователя появится сильное желание обойтись без нее.

Помните, что пользователи Windows могут жить в сети комфортно и без ваших процедур.

Старайтесь сокращать количество разных процедур, обслуживаемых вами. Использование в процедуре регистрации условных команд в сочетании с переменными в строках планирования драйвов при продуманной структуре каталогов и использовании объединения пользователей в группы позволяет составить достаточно гибкую и универсальную системную (в NetWare 4.x контейнерную, а лучше профильную) процедуру регистрации (одну-две) с целью упрощения многочисленных пользовательских процедур.



Когда выполняется процедура по умолчанию (Default Login script) и что она делает?



Когда выполняется процедура по умолчанию (Default Login script) и что она делает?

Процедура по умолчанию выполняется для пользователя, у которого отсутствует личная процедура регистрации. Она не редактируема (записана в теле утилиты LOGIN.EXE) и выполняет следующие действия:

Приветствует пользователя - Good Morning, SUPERVISOR:

WRITE "Good %GREETING_TIME, %LOGIN_NAME."

MAP DISPLAY OFF

MAP ERRORS OFF

Подавляет сообщения о планировании и ошибках:

MAR DISPLAY OFF

MAR ERRORS OFF

Планирует первый сетевой драйв в корневой каталог тома SYS: (и это правильно).

MAP *1: = SYS:

Пытается перепланировать его же в личный подкаталог пользователя, считая, что он в корневом каталоге тома SYS: (а если пользователей 250 или 1000, неужели они все будут там?):

MAP *1: = SYS:%LOGIN_NAME

Для администратора первый драйв перепланируется в SYS:SYSTEM (у них Norton Commander платный, а команду CD SYSTEM еще и вспомнить надо!):

IF "%1" = "SUPERVISOR" THEN MAP *1: = SYS:SYSTEM

Для NetWare 4.x эта строка имеет вид:

IF "%1" = "ADMIN" OR "%1" = "SUPERVISOR" THEN MAP *1: = SYS:SYSTEM

Аккуратно вставляет каталог с утилитами в начало пути PATH:

MAP INS S1: = SYS:PUBLIC

Пытается включить каталог с утилитами DOS в путь, но мало кто заводит каталог SYS:IBM_PC/MSDOS/6.22 и помещает в него утилиты:

MAP INS S2: = S1:%MACHINE/%OS/%OS_VERSION

Выводит полученные назначения на экран

MAP DISPLAY ON

MAP

Отменить ее выполнение можно созданием хотя бы фиктивных процедур, пускай содержащих один символ - пробел, но для ясности лучше символ комментария "*" или ";". Можно также в конце системной (контейнерной или профильной) процедуры поставить EXIT, но тогда не будет выполняться ни одна личная процедура.

Начиная с версии 3.65, утилита LOGIN поддерживает команду NO_DEFAULT, нейтрализующую эту заботливость системы



Можно ли изменить цвет экранов меню?



Можно ли изменить цвет экранов меню?

Да, для этого существует утилита COLORPAL.EXE. Она изменяет настройки в файле IBM$RUN.OVL, расположенного в каталоге SYS:PUBLIC. Эти изменения будут действовать для всех станций с типом машин IBM. Для изменения цветов необходимо иметь право записи в этот файл и снять (временно) атрибут Ro с этого файла.
Для того, чтобы изменения действовали на какую-то группу станций, задайте в их файле NET.CFG (SHELL.CFG) SHORT MACHINE NAME = nam4, где nam4 - не более чем четырехбуквенное имя, которое будет использоваться при поиске файла конфигурации (вместо IBM$RUN.OVL будет nam4$RUN.OVL), и создайте копии настроечных файлов с соответствующими именами.
Если в текущем каталоге запуска меню будет другой файл IBM$RUN.OVL, то NMENU использует его конфигурацию.



Можно ли изменить позицию и размер окна в меню?



Можно ли изменить позицию и размер окна в меню?

Нет, главное меню всегда появляется в левом верхнем углу экрана, подменю - правее. Ширина окна меню определяется самым длинным заголовком (но не больше 40 символов), высота - количеством пунктов (не более 12).



Можно ли расширить возможности NMENU?



Можно ли расширить возможности NMENU?

Меню NetWare 3.12 и 4.x представляет собой усеченный вариант Saber Menu for DOS фирмы Saber Software, и если воспользоваться полной версией этого пакета, можно получить б!!!"ольшие возможности, например, если в команде GETx перед окончанием {tail} указать опцию SECURE, то вводимые символы будут отображаться звездочками.



Можно ли узнать об успешности выполнения сложной процедуры регистрации?



Можно ли узнать об успешности выполнения сложной процедуры регистрации?

Утилита LOGIN возвращает код ошибки, который можно использовать, например, в .BAT-файле (ERRORLEVEL). Он будет нулевым, если регистрация произвелась успешно, однако ошибки планирования дисков и других команд процедуры регистрации (кроме ошибок типа нехватки памяти) в коде возврата не отражаются. Ненулевой код возврата появится при отказе в регистрации (неверное имя, пароль или другие ограничения регистрации)



Можно ли в меню использовать "горячие клавиши"?


Можно ли в меню использовать "горячие клавиши"?

Да, если указать их символы после символа "^" в имени пункта, например

ITEM ^XВыход

    EXEC EXIT

Следите за уникальностью определения "горячих клавиш" во всем меню.



Можно ли в NetWare 3.12 или 4.x использовать .MNU-файлы из прежних версий NetWare?



Можно ли в NetWare 3.12 или 4.x использовать .MNU-файлы из прежних версий NetWare?

Можно, но предварительно необходимо сконвертировать их в .SRC-файлы командой

MENUCNVT old_nam.MNU new_nam.SRC

и скомпилировать утилитой MENUMAKE.



Можно ли в процедуре регистрации NetWare 3.x подключаться к другим серверам?



Можно ли в процедуре регистрации NetWare 3.x подключаться к другим серверам?

Можно, если у вас на них есть свой бюджет (то есть, если вы на них - зарегистрированный пользователь). Команда

ATTACH server_name\user_name

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



Можно ли в процедуре регистрации определить, что используется на станции: NETX или VLM?



Можно ли в процедуре регистрации определить, что используется на станции: NETX или VLM?

Можно, используя переменную SHELL_TYPE, что легко показать на примере:

IF SHELL_TYPE "V4.00" THEN

WRITE "Your NETX not modern client"s software"/7

END

Всякий раз, встретив NETX, утилита об этом скажет и пискнет.



Можно ли выполнять процедуру регистрации без перерегистрации на сервере?



Можно ли выполнять процедуру регистрации без перерегистрации на сервере?

Можно, но только для NetWare 3.x и младше: выполните команду LOGIN /NA. Опция /NA (NoAttach) обеспечивает выполнение процедуры регистрации без самой регистрации на сервере. Для выбора выполняемой процедуры возможно сочетание с опцией /S.



Можно ли запускать программы из процедуры регистрации?



Можно ли запускать программы из процедуры регистрации?

Да, утилита LOGIN позволяет исполнять внешние команды и команды DOS. Для запуска внешней команды (.COM или .EXE файла) в процессе процедуры перед ее именем в строке ставится префикс "#". По окончании работы программы выполнение процедуры продолжится.

В аргументах внешней команды можно использовать переменные, используемые в процедурах регистрации.

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

Для выполнения внутренних команд DOS, а также .BAT-файлов, используется запуск командного процессора COMMAND.COM с опцией /C (порождение дочернего процесса), например

#COMMAND /C DIR C:

#COMMAND /C SYS : LOGIN/START.BAT

Для запуска любой команды по окончании процедуры используется команда EXIT "text". Эта команда завершает работу LOGIN и помещает текст, заключенный в кавычки, в клавиатурный буфер, завершая его символом возврата каретки.



Можно ли запускать резидентные программы из процедуры регистрации?



Можно ли запускать резидентные программы из процедуры регистрации?

В принципе для запуска резидентных (TSR) программ можно использовать как запуск через префикс "#", так и команду EXIT "text".

Избегайте запуска резидентных программ внутри процедуры (через "#") - по окончании LOGIN.EXE не сможет освободить занимаемую им память, а он от версии к версии только растет.

CAPTURE в NetWare - не резидентная программа, она только управляет средствами перехвата, встроенными в оболочку или запросчик. Смело запускайте ее из процедуры.



Почему не действуют переменные окружения DOS, установленные в процедуре регистрации?



Почему не действуют переменные окружения DOS, установленные в процедуре регистрации?

Если вы уверенны в синтаксисе команд процедуры, обратите внимание на способ запуска команды LOGIN. Для нормального глобального использования переменных окружения (в том числе и PATH) не следует запускать процедуру LOGIN из оболочек типа Norton Commander. Более достойное место для нее - файл AUTOEXEC.BAT.



Почему не срабатывает команда, помещенная в кавычки после слова EXIT?



Почему не срабатывает команда, помещенная в кавычки после слова EXIT?

В этом случае имитируется набор указанного текста и нажатия Enter записью его в клавиатурный буфер BIOS, что работает только на IBM PC-совместимых машинах. Если имя машины (по умолчанию MACHINE=IBM_PC) с целью ее идентификации изменено в NET.CFG (SHELL.CFG), то не пугайтесь сообщения, похожего на "Invalid exit command followed by a string is not supported on this machine", а поместите в текст процедуры команду PCCOMPATIBLE (до команды EXIT).
Не забывайте о синтаксических правилах: даже в кавычках нельзя применять в качестве разделителей имен каталогов символ "\", вместо него используйте "/".



Почему в NetWare 4.x изменения



Почему в NetWare 4.x изменения, внесенные в процедуру регистрации, начинают действовать с некоторой задержкой?

В отличии от NetWare 3.x, где LOGIN управлял входом в сервер, теперь он управляет входом в сеть. Внесенные изменения должны разойтись по всем серверам сети, на что, естественно, требуется время. Но это не самая дорогая плата за удовольствие однократной регистрации в СЕТИ.



После обновления LOGIN.EXE в NetWare



После обновления LOGIN.EXE в NetWare 4.x имена групп все равно не отрабатываются в процедуре регистрации, что делать?

Убедитесь в том, что вы используете полное имя группы, оператор должен иметь вид

IF MEMBER OF ".group_name.ou_name.org_name[.c_name]"



Процедура регистрации (Login Script)



9.1 Процедура регистрации (Login Script)

Процедура регистрации (сценарий входа, Login script) - это последовательность действий, автоматически выполняемых при регистрации - входе в сеть NetWare. Процедура регистрации напоминает выполнение .BAT-файла DOS, но со специфическим набором команд, обеспечивающих формирование операционной среды, планирование (drive mapping) логических дисков станции в сетевые каталоги серверов, переназначение принтерных портов, вывод сообщений и т. п.

B NetWare 3.x и младше процедура регистрации состоит из двух частей: системная процедура (общая для всех пользователей данного сервера) и индивидуальная процедура пользователя.

B NetWare 4.x процедура регистрации состоит из трех частей: процедура контейнера (общая для всех пользователей данного контейнера), процедура профиля (единая для любой произвольно сформированной общности пользователей сети) и индивидуальная процедура пользователя.

Выполнением процедуры можно управлять через параметры команды LOGIN.

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

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

Процедура регистрации выполняется утилитой LOGIN.EXE.

Обобщенный формат команды:

LOGIN [/option...] [server_name/] [login_name] [parms]

Опция /C очищает экран после ввода пароля (ClearScreen)

Опция /S name заменяет стандартную связку процедур (Script) на заданную полным путем и именем альтернативного файла name. Если name не задан, не выполняется ни одна процедура.

В NetWare 4.x для подавления процедур служит опция /NS, а в опции /S имя name может задавать не файл, а имя объекта Каталога, чьи процедуры нужно выполнять вместо обычных.
Опции /SWAP и / NOSWAP управляют свопингом памяти во время выполнения LOGIN, опция /SWAP = d:\path задает диск и каталог, используемый для свопинга.

Параметры (parms) команды LOGIN могут задавать переменные, используемые в процедурах регистрации.

В процедурах регистрации используются команды получения доступа к сетевым ресурсам, команды управления выполнением процедур и команды оформления (табл. 9.2 ).

При использовании переменных (табл. 9.3) в строках их имена пишутся заглавными буквами после символа %. Переменные, обозначенные как %1, %2, %3... заполняются аргументами строки запуска команды LOGIN. В них по порядку попадают все слова строки, расположенные правее слова LOGIN (за исключением опций), разделенные пробелами. Например, после команды

LOGIN /CLS ADMIN FIRST

%1 примет значение ADMIN, %2 - FIRST

В командах процедур регистрации для разделителя имен подкаталогов используется символ слэш "/" (обратный слэш "\" используется в качестве управляющего, табл. 9.1).

Команда MAP планирует драйвы на сетевые каталоги и отображает эти назначения. Планироваться на сетевые каталоги могут как сетевые драйвы, так и локальные (в этом случае обращение к физическим локальным драйвам блокируется до отмены данного плана). При ссылке на номер драйва в команде MAP *n: = path_name подразумевается n-я буква, начиная с первого сетевого драйва (FIRST NETWORK DRIVE для VLM, следующая буква за назначенным LASTDRIVE для NETX). Возможно также планирование на следующий доступный драйв командой MAP N[ext] = path_name.

Драйвы поиска (Search Drive), попадающие в переменную PATH окружения DOS, обозначаются S1: - S16:. Они в обратном порядке соответствуют буквам, начиная с Z: (для VLM - указанной параметром LASTDRIVE).

Имя сетевого каталога path_name может включать переменные MACHINE, OS, OS_VERSION, LOGIN_NAME, например:

MAP *1: = SYS:USERS/%LOGIN_NAME

для пользователя SERG спланирует первый сетевой драйв в каталог SYS:USERS/SERG.

В NetWare 4.x для задания сетевого каталога может использоваться имя отображающего его объекта-каталога (directory map object), который в заданном контексте будет отображать указанный реальный каталог.




Создание и использование меню



9.2 Создание и использование меню

Меню NetWare позволяют облегчить применение любых команд, выполняемых с консоли рабочей станции сети. Меню работают в символьном режиме на любом видеоадаптере, их функции и цветовая палитра могут определяться пользователем. Процесс создания меню состоит из определения сценария в текстовом файле .SRC, имеющем легко понимаемую структуру и синтаксис, и компиляции его утилитой MENUMAKE в используемый при исполнении файл .DAT. Меню исполняется командой

NMENU [path] menu_file

из командной строки, .BAT-файла или процедуры регистрации.

Исходный файл содержит организационные и управляющие команды.

Организующая команда MENU пишется с начала строки. Синтаксис MENU m_num, scr_name - признак начала экрана меню или подменю; m_num- номер (1-255) меню, используемый во внутренних перекрестных ссылках, scr_name - текст, отображаемый в верхней строке экрана. При запуске NMENU первым выводится экран, описанный в самом начале .SRC-файла - главное меню (независимо от его номера).

Организующая команда ITEM пишется с обязательным отступом: ITEM el_name {[op1 [op2...]]} - определение пунктов меню; el_name - имя элемента, отображаемое на экране, op1, op2 - необязательные опции (при отсутствии опций фигурные скобки все равно ставятся).



Специальные символы процедур регистрации



Таблица 9.1 Специальные символы процедур регистрации

\R Возврат в начало строки
\N Перевод строки (без возврата к началу)
\" Вывод кавычки
\7 Гудок
* или ; Признак комментария



Команды процедур регистрации.



Таблица 9.2 Команды процедур регистрации.

Команды получения доступа к сетевым ресурсам:
ATTACH [server_name[/login_name]] подключение к другому серверу NetWare 3.x и младше;
MAP [drive:] ввод назначения дисков (всех или указанного)
MAP [option] drive: = path_name планирование логического диска в сетевой каталог. drive - буква (номер) сетевого драйва или номер драйва поиска,
path_name имя отображающего его сетевого каталога, начинающееся с имени тома (на текущем сервере) или имени сервера.
Возможные значения поля option команды MAP:
INS вставка плана между существующими со сдвигом их букв;
DEL удаление плана (для буквы локального драйва - его восстановление как локального)
ROOT планирование псевдокорня
MAP DISPLAY ON (OFF) управление выводом назначения планов;
MAP ERRORS ON (OFF) управление выдачей сообщений об ошибках планирования;
Команды управления выполнением процедур:
BREAK ON (OFF) разрешает прерывания процедуры по Ctrl-Break (Ctrl-C);
GOTO осуществляет переход к метке;
IF... THEN... [ELSE...] END конструкции для выполнения условных команд. В качестве условий может использоваться истинность (не 0) значений условных переменных или установленного отношения переменных: равно (=), не равно (!= или <>), больше (>), больше или равно (>=), меньше (<), меньше или равно (<=). Условия могут быть составными, объединяясь функциями AND (запятыми) и OR;
INCLUDE fname вызывает процедуру, описанную во внешнем текстовом файле;
NO_DEFAULT запрещает выполнение Default login script - процедуры пользователя по умолчанию (она выполняется при отсутствии личной);
PAUSE приостанавливает процедуру до нажатия клавиши;
EXIT ["сommand"] завершает процедуру с имитацией ввода текста, заключенного в кавычки, и нажатия клавиши Enter
# "ext_prog" запускает внешние программы (EXECUTE);
[PC]COMPATIBLE разрешает работу имитатора в команде EXIT для станций, у которых задан тип машины (MACHINE), отличный от IBM_PC;
SHIFT [n] переносит неиспользованные аргументы командной строки к следующей переменной (количество позиций переноса может быть и отрицательным, по умолчанию 1);
Команды задания переменных:
COMSPEC = pathname задает файл командного процессора (COMMAND.COM);
DOS BREAK ON OFF управляет разрешением прерывания по Ctrl-Break (Ctrl-C) в DOS;
DOS SET parm = "val" задает переменные окружения DOS (можно и просто SET);
DOS VERIFY ON | OFF управляет верификацией записи на локальный диск;
DRIVE d: устанавливает текущий диск;
Команды оформления:
DISPLAY fname выводит указанный файл на экран;
FDISPLAY fname выводит файл, обрабатывая escаpe-последовательности;
FIRE PHASERS [n TIMES] имитирует звуки выстрела (n-выстрелов);
WRITE "string" выводит указанную строку на экран (строка может содержать символьные константы и переменные, например, команда WRITE "Привет, %LOGIN_NAME!" пользователю SERG выведет строку Привет, SERG!);
REM[ARK] определяет остаток строки как комментарий. Символы * и ; также обозначают комментарии . Комментарии нельзя включать в строки с командами ATTACH, COMSPEC, DISPLAY, FDISPLAY, DOS SET, EXIT, MACHINE, MAP, WRITE.
Дополнительные команды NetWare 4.x:
CONTEXT context смена контекста дерева каталога
PROFILE "prof_name" выполнение процедуру чужого профиля вместо своего
SET_TIME ON | OFF управление синхронизации станции с сетевым временем
WAIT синоним PAUSE
CLS очистка экрана
LASTLOGINTIME вывод даты и времени последней регистрации
SWAP включение свопинга памяти при выполнении LOGIN (по умолчанию)
NOSWAP выключение свопинга памяти



Переменные, используемые в командах процедур регистрации



Таблица 9.3 Переменные, используемые в командах процедур регистрации

Дата:
DAY день месяца (01-31);
DAY_OF_WEEK день недели (Monday, Tuesday...);
NDAY_OF_WEEK номер дня недели (1-7, воскресенье=1);
MONTH номер месяца (01-12);
MONTH_NAME месяц (January, February...);
SHORT_YEAR год (короткий: 88, 89...);
YEAR год (1990, 1991...)
Время:
AM_PM утро или вечер (am или pm);
GREETING_TIME утро, день или вечер (morning, afternoon, evening);
HOUR час (1-12);
HOUR24 час (00-23);
MINUTE минута (00-59);
SECOND секунда (00-59).
Пользователь:
FULL_NAME полное имя (full name);
LOGIN_NAME имя регистрации;
USER_ID идентификатор.
PASSWORD_EXPIRES количество дней до истечения срока действия пароля.
Дополнительные переменные для NDS:
CN имя объекта-пользователя
LOGIN_CONTEXT имя контекста, в котором находится объект-пользователь.
LOGIN_ALIAS_CONTEXT результат проверки, является ли текущий контекст псевдонимом.
REQUESTER_CONTEXT текущий контекст.
LAST_NAME значение атрибута LAST NAME пользователя
attrib_name значение любого атрибута пользователя-объекта NDS.
Станция:
MACHINE имя машины в SHELL.CFG или NET.CFG (по умолчанию IBM_PC, допускает выполнение строки из команды EXIT);
OS имя ОС в SHELL.CFG или NET.CFG (по умолчанию MSDOS);
OS_VERSION версия ОС (6.22);
P_STATION MAC-адрес узла (12 шестнадцатеричных цифр);
SMACHINE краткое имя машины (по умолчанию IBM), используется для построения имен оверлейных файлов сетевых утилит, зависящих от типа машин (IBM$RUN.OVL, CMPQ$RUN.OVL и т. д.);
STATION номер соединения станции на сервере;
SHELL_TYPE номер версии оболочки;
NETWARE_REQUESTER номер версии запросчика VLM/
Сеть:
NETWORK_ADDRESS номер кабельной сети (8 шестнадцатеричных цифр);
FILE_SERVER имя текущего сервера.;
Окружение DOS:
Значение любой переменной окружения, имя которой заключено в угловые скобки < > используется как элемент строки.
Условные переменные:
ACCESS_SERVER имеет значение TRUE если работает Access Server;
ERROR_LEVEL номер ошибки, 0=нет ошибок;
MEMBER OF "group" TRUE если пользователь входит в указанную группу.
NOT MEMBER OF "group" TRUE если пользователь не входит в указанную группу;


Опции команды ITEM



Таблица 9.4 Опции команды ITEM

Опция Действие
BATCH Удаляет NMENU.EXE из памяти на время выполнения пункта. Экономит память за счет некоторого замедления. Автоматически устанавливает опцию CHDIR.
CHDIR Возвращает в каталог, являвшийся текущим при запуске NMENU.
PAUSE Задерживает выход из пункта до нажатия клавиши.
SHOW Показывает в левом верхнем углу имя команды DOS, выполняющей пункт.


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

Управляющие команды меню



Таблица 9.5 Управляющие команды меню

Команда

Действие

EXEC com_name Выполняет указанную команду DOS
LOAD fname Загружает другое меню из указанного файла
SHOW m_num Вызывает подменю с указанным номером
GETO Запрашивает необязательную информацию перед выполнением следующих пунктов, помещая ее в переменную %n.
GETP Запрашивает информацию перед выполнением следующих пунктов, помещая ее в переменную %n.
GETR Запрашивает обязательную информацию перед выполнением следующих пунктов, помещая ее в переменную %n.


Опции команды EXEC



Таблица 9.6 Опции команды EXEC

Опция Действие
EXEC EXIT Завершение работы с меню и выход в DOS
EXEC CALL Вызов командного (.BAT) файла
EXEC DOS Временный выход в DOS - загрузка командного процессора (COMMAND.COM), по окончании работы с ним нужно набрать команду EXIT
EXEC LOGOUT Завершение сеанса и разрегистрация пользователя.

Команды GETR, GETO, GETP вводят текст с консоли по порядку в переменные %1, %2, %3... и имеют общий синтаксис:
GETx prompt {head} max_len, default, {tail}
prompt - поясняющее приглашение, default - значение по умолчанию, max_len - ограничение на длину ввода, head и tail - фрагменты текста, добавляемые перед и после символов, введенных пользователем.


В каком порядке выполняется процедура регистрации и можно ли его изменить?



В каком порядке выполняется процедура регистрации и можно ли его изменить?

В NetWare 3.x и младше процедура регистрации начинается с выполнения системной процедуры регистрации, затем выполняется процедура клиента. Выполнение процедуры клиента может блокироваться командой EXIT системной процедуры.

В NetWare 4.x процедура регистрации начинается с выполнения процедуры контейнера, в котором определен пользователь, затем выполняется процедура профиля, последней выполняется процедура клиента. Выполнение каждой последующей процедуры может блокироваться командой EXIT предыдущей процедуры. Профильную процедуру можно отменить или заменить на другую командой PROFILE в контейнерной процедуре. Порядок легко запомнить - CPU (Container - Profile - User).

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

Стандартные связки процедур могут отменяться или заменяться на другую опцией /S команды LOGIN.