Что означает
сообщение "Missing command name"? Это сообщение появляется, если в процедуре регистрации есть строка с префиксом внешней команды "#", а самого имени команды нет. Уберите лишний префикс, или впишите недостающее имя команды. Почему не срабатывает команда, помещенная в кавычки после слова 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). Как упростить текст сложной процедуры регистрации и облегчить ее отладку? Если предположить, что функционально вашу
процедуру уже не упростить, то можно
рекомендовать несколько способов улучшения ее
для упрощения и облегчения отладки. IF LOGIN_NAME=SUPERVISOR THEN MAP ERRORS OFF Используйте INCLUDE, особенно когда в условную
конструкцию надо включить сложную
последовательность действий - это облегчит и
читаемость, и отладку. Как отлаживается процедура регистрации? К сожалению, специальных средств нет, и отлаживать приходится экспериментальными методами. Для этого удобно иметь рядом две станции, на одной из которых, зарегистрировавшись с нужными правами, редактировать процедуры не выходя из сети, чтобы не попасть в случайно получившуюся ловушку. Другую станцию используйте для входов под отлаживаемым именем и проверки действий процедуры. При отладке полезно разрешать сообщения о назначениях и ошибках планирования (MAP DISPLAY ON, MAP ERRORS ON). В качестве отладочных средств можно временно вставлять команды PAUSE, MAP для проверки назначений в текущей точке процедуры, WRITE для определения текущего местоположения, EXIT для отсечения неотлаженного "хвоста", GOTO для обхода сомнительных мест. В случае применения условных операторов IF THEN ELSE END следите за закрытием этих конструкций. Имена групп, отличающиеся одним символом, некорректно отрабатываются оператором IF MEMBER OF, что делать? Эта известная ошибка NetWare 4.0 исправлена в "заплатке" LOG412.EXE, содержащей утилиту LOGIN.EXE. Ее нужно установить в каталоги SYS:LOGIN и SYS:PUBLIC на всех серверах сети. После обновления LOGIN.EXE в NetWare 4.x имена групп все равно не отрабатываются в процедуре регистрации, что делать? Убедитесь в том, что вы используете полное имя группы, оператор должен иметь вид IF MEMBER OF ".group_name.ou_name.org_name[.c_name]" Как определять переменные окружения DOS в процедуре регистрации? Для этого существует команда DOS SET (можно просто SET), работающая как и в DOS, но имеющая некоторые особенности:
Если переменная нужна только в процессе выполнения процедуры, используйте команду TEMP SET - при этом не нагружается среда окружения (DOS Environment). Почему не действуют переменные окружения DOS, установленные в процедуре регистрации? Если вы уверенны в синтаксисе команд процедуры, обратите внимание на способ запуска команды LOGIN. Для нормального глобального использования переменных окружения (в том числе и PATH) не следует запускать процедуру LOGIN из оболочек типа Norton Commander. Более достойное место для нее - файл AUTOEXEC.BAT. Какие значения получают переменные %0, %1, %2 и т. д., используемые в процедуре регистрации. Для ответа на этот вопрос создайте несложный тестовый файл, текст которого приведен ниже, запишите его на любой доступный диск (например, A:) и выполните команду F: LOGIN /SА : \TESTVAR SUPERVISOR V1 V2 V3 Вы получите следующие сообщения, отвечающие на данный вопрос: Login_name: SUPERVISOR Если вы попробуете вариант запуска F: LOGIN а на запрос имени ответите /SA: \TESTVAR SUPERVISOR V1 V2 то получите тот же результат. Если вы вводите имя пользователя с именем сервера, то переменным LOGIN_NAME и %1 все равно присваивается только имя регистрации. Текст файла TESTVAR: WRITE "Login_name: %LOGIN_NAME." Этот тест показывает, что переменная %0 не
определяется, а в %LOGIN_NAME попадает не усеченное
имя (хотя некоторые источники утверждают, что в %0
попадает имя пути к утилите LOGIN, а LOGIN_NAME усекается
до 8 символов). Что означает сообщение "Your login script file has beeen locked too long by another station" как быть в этом случае? Это ситуация, когда вы пытаетесь
зарегистрироваться в то время, когда другой
пользователь редактирует ваш файл LOGIN обычным
текстовым редактором. Некоторое время
безрезультатно подождав, утилита LOGIN исполнит
для вас свой сценарий по умолчанию. После этого
вам на первом поисковом диске (скорее всего Z:)
будет доступен каталог SYS:PUBLIC, в котором есть
утилита SESSION. Она поможет спланировать
необходимые диски, но если ваша процедура
производила еще какие-либо настроечные действия,
их придется выполнять вручную. Если потери
велики, подскажите вашему администратору
(очевидно это он занял файл LOGIN), как копировать
блоки редактором SYSCON, именно неочевидность
способа копирования обычно отвращает
администратора от штатных средств. Администратор все время "улучшает" системную процедуру регистрации, совсем без процедуры - плохо, но надоело участвовать в эксперименте. Как быть? Выход есть - заведите себе на диске файл с текстом необходимой процедуры, и запуская LOGIN, ссылайтесь прямо на него командой, аналогичной LOGIN /S OUR_SERV/SYS:USERS\MIK\LOGIN.TXT MIK Правда, при этом вы можете пропустить какую-либо важную информацию, которую администратор хотел донести до всех. Можно ли в процедуре регистрации определить, что используется на станции: NETX или VLM? Можно, используя переменную SHELL_TYPE, что легко показать на примере: IF SHELL_TYPE "V4.00" THEN WRITE "Your NETX not modern client"s software"/7 END Всякий раз, встретив NETX, утилита об этом скажет и пискнет. Почему в NetWare 4.x изменения, внесенные в процедуру регистрации, начинают действовать с некоторой задержкой? В отличии от NetWare 3.x, где LOGIN управлял входом в сервер, теперь он управляет входом в сеть. Внесенные изменения должны разойтись по всем серверам сети, на что, естественно, требуется время. Но это не самая дорогая плата за удовольствие однократной регистрации в СЕТИ. Можно ли в процедуре регистрации NetWare 3.x подключаться к другим серверам? Можно, если у вас на них есть свой бюджет (то есть, если вы на них - зарегистрированный пользователь). Команда ATTACH server_name\user_name приведет к желанной цели, а если имя и пароль будут синхронизированы (совпадать с используемыми на текущем сервере), то система не запросит еще один пароль, что приятно. Как синхронизировать пароли на серверах NetWare 3.x? Для синхронизации паролей на нескольких серверах, на которых вы имеете бюджеты с одинаковыми именами, необходимо подключиться к ним, например, командами ATTACH, введя необходимые пароли. Далее, запустите утилиту смены пароля SETPASS, и, после повторного ввода нового пароля согласитесь с предложением синхронизации своих паролей на перечисленных серверах. При отказе от синхронизации новый пароль будет установлен только на текущем сервере (или указанном в команде SETPASS).
Пароли могут не переустановиться на других серверах, если вы не имеете права на переустановку или новый пароль не удовлетворяет требованиям к паролю вашего бюджета на этом сервере. Можно ли узнать об успешности выполнения сложной процедуры регистрации? Утилита LOGIN возвращает код ошибки, который можно использовать, например, в .BAT-файле (ERRORLEVEL). Он будет нулевым, если регистрация произвелась успешно, однако ошибки планирования дисков и других команд процедуры регистрации (кроме ошибок типа нехватки памяти) в коде возврата не отражаются. Ненулевой код возврата появится при отказе в регистрации (неверное имя, пароль или другие ограничения регистрации) Можно ли изменить цвет экранов меню? Да, для этого существует утилита COLORPAL.EXE. Она
изменяет настройки в файле IBM$RUN.OVL,
расположенного в каталоге SYS:PUBLIC. Эти изменения
будут действовать для всех станций с типом машин
IBM. Для изменения цветов необходимо иметь право
записи в этот файл и снять (временно) атрибут Ro с
этого файла. Можно ли изменить позицию и размер окна в меню? Нет, главное меню всегда появляется в левом верхнем углу экрана, подменю - правее. Ширина окна меню определяется самым длинным заголовком (но не больше 40 символов), высота - количеством пунктов (не более 12). Можно ли расширить возможности NMENU? Меню NetWare 3.12 и 4.x представляет собой усеченный вариант Saber Menu for DOS фирмы Saber Software, и если воспользоваться полной версией этого пакета, можно получить б!!!"ольшие возможности, например, если в команде GETx перед окончанием {tail} указать опцию SECURE, то вводимые символы будут отображаться звездочками. Можно ли в NetWare 3.12 или 4.x использовать .MNU-файлы из прежних версий NetWare? Можно, но предварительно необходимо сконвертировать их в .SRC-файлы командой MENUCNVT old_nam.MNU new_nam.SRC и скомпилировать утилитой MENUMAKE. Можно ли в меню использовать "горячие клавиши"? Да, если указать их символы после символа "^" в имени пункта, например ITEM ^XВыход EXEC EXIT Следите за уникальностью определения "горячих клавиш" во всем меню. |
Михаил Гук (Mgook@stu.neva.ru,
Сайт автора) |