...
...

CMD Has You, или матрица уже нашла тебя

CMD Has You, или матрица уже нашла тебя

...Одним из примеров громоздкой и, по мнению авторов, бесполезной надстройки является интегрированная система WINDОWS фирмы Micrоsoft. Эта система занимает почти 1 Мбайт дисковой памяти и рассчитана на преимущественное использование совместно с устройством типа <мышь> ...

(цитата из книги: Кренкель Т.Э., Коган А.Г., Тараторин А.М. Персональные ЭВМ в инженерной практике. - М.: Радио и связь, 1989)

Со времен появления "революционного" графического интерфейса пользователи (особенно это касается пользователей продуктов Microsoft) начали забывать, что такое командная строка, и с чем ее едят. В меньшей мере это касается приверженцев *nix-систем, хотя графические оболочки и там медленно, но уверенно берут верх. Правда, это справедливо в отношении прикладных программ. Но что касается администрирования, то здесь все сложнее. Конечно, консоли даже в Windows NT-семейства далеко до удобства использования *nix-консоли, но в этом отношении есть кое-какой прогресс. О DOS мы говорить не будем, а посмотрим, что может нам предложить командная строка WinXP. С точки зрения простого пользователя командная строка - очень сложная и непонятная вещь. Но на самом деле там все очень просто. Начнем с того, что командный процессор в WinXP называется cmd.exe (напомню, что DOS в Win98 имеет название command.com). Вызвать его можно через меню Пуск -> Выполнить -> cmd. Ради удобства можно, зайдя в свойства окна (правой кнопкой мыши по заголовку), включить быструю вставку мышью и выделение мышью. Тогда фрагменты текста можно выделять, зажав левую клавишу, а вставлять и копировать - нажав правую. Текст вставляется в текущее положение курсора (но не указателя мыши!). Итак, окошко с приятным глазу черным цветом открыто, можно приступать. Сразу скажу: консоль имеет встроенную справку на русском (если у вас русская версия XP), хотя может быть и такой вариант, когда ОС вроде бы русская, а справка на английском - что только ни придумывают наши рукастые пираты… Получить справку можно просто введя команду без параметров или же после команды набрав через пробел "/?". Будем считать, что первоначальные навыки работы с консолью у вас имеются (это значит, что вы знаете раскладку клавиатуры, а также команды cd, dir, del+format:-)). Поэтому некоторые простейшие команды мы опустим. Возьмемся сразу за самое вкусное, а именно - за сетевые команды. Т.е. команды для работы с сетью. И самая главная из них - это ping. Команда служит для диагностики сетевого подключения. Выдает время прохождения пакетов между компьютерами. Имеет один обязательный параметр - имя компьютера, соединение с которым будет тестироваться. Можно использовать и IP-адрес. Если используется имя компьютера, можно узнать его IP. Ping имеет несколько ключей (список можно узнать во встроенной справке). Наиболее интересные из них - это флаги -t и -l. Первый указывает, что необходимо отправлять пакеты до команды прерывания (к слову, это значит нажатие Ctrl+c, работает во всех случаях), по умолчанию шлется четыре запроса. -l c числом задает размер отсылаемого пакета. Нижеприведенная команда посылает на узел hostname бесконечное число пакетов размером по 666 байт: shell> ping -t -l 666 hostname. В локальной сети может быть использовано для простейшей атаки на недружелюбный компьютер. Как - не мне вам рассказывать:-).

Теперь перейдем к наиболее часто используемой в локальной сети группе команд. Это команды из серии net (полный список можно получить, вызвав для соответствующей команды справку). Чаще всего используются net file, net session, net use, net view и net share. Практически все команды при их выполнении без параметров выдают какие-либо сведения, будь то информация о настройках компьютера или список запущенных служб. Так что не следует бояться их выполнять - ничего не сломается, хоть главный принцип администрирования и гласит: "Не трогай работающую систему":-).

shell> net accounts. Позволяет обновлять базу учетных данных пользователей, задавать пароль и параметры подключения. При выполнении без параметров выводит информацию о сроках действия паролей, их длине, роли компьютера (сервер или рабочая станция), наличии блокировок после неправильного ввода пароля и сроке их действия. И соответственно позволяет все эти параметры задавать. Ежедневного практического применения (по крайней мере, у меня:-)) не имеет.

shell> net computer. Служит для добавления и удаления компьютера из домена. Если у вас не доменная структура сети (т.е. построена на рабочих группах, нет сервера - контролера домена), команда вам не нужна. Параметры /add и /del, я думаю, в пояснениях не нуждаются. Синтаксис таков: net computer \\hostname /add. Данная команда добавляет компьютер в домен.

shell> net config. Служит для настройки параметров служб server и workstation. Практическую ценность имеет возможность задания времени автоматического отключения по тайм-ауту и задания комментария для сервера (комментарий будет виден при открытии Сетевого окружения). Напоминаю, что комментарий в WinXP идет перед именем компьютера, а в Win98 - наоборот. Все параметры перечислять не буду. Вот основные: shell> net config server /AUTODISCONNECT:15 - автоотключение через 15 минут; shell> net config /SRVCOMMENT:"комментарий" - задание комментария для локального компьютера. Net stop/net continue/net start. Эти команды служат для остановки, продолжения выполнения и запуска служб. Необходимы для того, чтобы при внесении параметров в какую-либо службу изменения вступили в силу (так как многие серверы читают свой конфинг только в начале, при старте, так что, если вы изменили конфинг своего Apach-web-сервера, данными командами его можно перезапустить). Если служба имеет в своем названии пробелы, то ее следует заключать в кавычки. Изменения в имени службы (сокращения и др.) не допускаются. Так что, если вы не помните имя службы, лучше просмотреть их список. Как - расскажу ниже. Итак, останавливаем службу Модуль поддержки NetBIOS через TCP/IP: shell> net stop "Модуль поддержки NetBIOS через TCP/IP". shell> net continue "Модуль поддержки NetBIOS через TCP/IP" - запускаем ее вновь. Список уже запущенных служб можно просмотреть, выполнив net start без параметров.

shell> net file. Показывает файлы, открытые удаленными пользователями. Выдает номер подключения, имя подключившегося юзверя (вернее, его логин), а также время подключения. Имеет параметр /clouse, который применяется для принудительного завершения сеанса (это называется "кикнуть" кого-либо).

shell> net file 12 /close. Этой командой мы завершаем соединения с номером 12. Выполнение shell> net group возможно для контролера домена Windows. Так что если у вас не эта ситуация, команда эта не будет доступна. А служит она для работы с группами. Для локального компьютера существует похожая команда - net localgroup. Введенная без параметров выводит список групп на локальном хосте. Этой командой вы можете добавить, удалить группу или пользователя, задать комментарий для группы. Имеются ключи: /comment: "текст" - добавление комментария, /add, /deletе - соответственно для добавления и удаления пользователей и групп. /domain применим только для членов домена. Примеры использования: shell> net localgroup group /add - добавление группы group. shell> net localgroup group user /add - добавление пользователя user в группу group. Конечно, иногда имя пользователя может нам многое дать, но лучше все же знать имя компьютера. Сделать это можно при помощи net session. Net session показывает активные подключения с именем компьютера, логином пользователя, версией Windows и номером ее сборки (WinXP - это, оказывается, Windows 2002:-)). Команда имеет ключ /delete для принудительного завершения соединения. Например, сейчас мы закроем соединение с компьютером hostname: net session \\hostname /delete. Каким образом можно получить список доступных компьютеров в сети? Делается это командой net view. Но тут стоит оговорится, что имеется ввиду под словом "доступные". Дело в том, что нахождение доступных компьютеров в сети - довольно нетривиальная задача для программистов. Для разных протоколов она решается по-разному. Просканировать все возможные IP-адреса практически невозможно. Поэтому, чтобы как-то упростить эту задачу, компьютеры обмениваются между собой информацией о известных машинах. Список компьютеров обновляется периодически. А это значит, что информация может быть устаревшей. Это приводит к тому, что, когда вы заходите в Сетевое окружение и пытаетесь войти на компьютер, который показан как доступный, вам выдается сообщение "Нет доступа". Вот именно этот список компьютеров, о которых говорилось выше, можно получить командой net view. Введенная без параметров, она выдает список машин в рабочей группе локального компьютера. Имеет параметр /domain для явного указания интересующей вас рабочей группы. Нижеприведенный пример выдает список хостов в рабочей группе workgroup: shell> net view /domain:workgroup.

В чисто познавательном плане интересна команда net statistics. Информация может быть получена для двух служб - SERVER и WORKSTATION. Если вам интересно количество байтов, принятых и отправленных вашим сетевым адаптером, то эта команда для вас. Получение информации о работе службы SERVER: net statistics server.

Net name. Предназначена для задания или удаления псевдонима, под которым компьютер принимает и отсылает сообщения. Сообщения принимаются Службой сообщений. Для отправки сообщений необходимо выполнить shell> net send hostname. Вместо hostname может стоять имя (псевдоним), заданное при помощи net name. Но следует быть осторожным, если вы решите оставить Службу сообщений включенной. Дело в том, что способа ограничить количество принятых сообщений нет. При приеме Windows выбрасывает окошко с текстом послания. Причем оно имеет свойство "Поверх всего" и по умолчанию неактивно. Какой-нибудь "шутник" запросто может при помощи сгенерированного .bat-файла отослать вам несколько десятков тысяч таких окошек. Единственный способ их закрыть (кроме перезагрузки) - держать зажатым Alt+F4, но, правда, при этом придется закрывать все используемые приложения, что, согласитесь, не всегда приятно. Кроме того, существуют программы, где даже bat-файл генерить нет необходимости - нужно лишь ввести сообщение и количество посланий:-). Как себя обезопасить, вы, наверное, уже догадались - достаточно отключить Службу сообщений. Итак, net name может иметь следующие параметры: /add и /delete. Синтаксис обычный. Ниже мы добавляем псевдоним secondname на локальном компьютере: shell> net name secondname (это эквивалентно shell> net name secondname /add).

Net send имеет ключи для отправки сообщений всем пользователям домена (shell> net send /domain:domain_name messange) или всем пользователям сервера (shell> net send /users messange). Кстати, если сеть у вас построена не на доменной структуре, а на рабочих группах, способ отправки сообщений для всех компьютеров группы тоже работает. Только вместо имени домена необходимо писать имя рабочей группы (как и в случае с net view). И, заканчивая с net send, нужно сказать, что эта фишка в Windows 98 отсутствует (пошутить не удастся:-)).

Теперь о самом вкусном, о "шарах". А именно об общедоступных для пользователей сети принтерах и папках. Net print. Служит для вывода информации об очередях печати на сетевых принтерах, а также управления заданиями печати. Имеет следующие параметры: \\hostname\имя_ресурса. Может содержать ключи: /HOLD - задержка задания с указанным номером, /RELEASE - запуск ранее остановленного задания, /DELETE - удаление задания из очереди. Например: shell> net print \\hostname\printer - вывод сведений об очереди печати ресурса printer на компьютере hostname, shell> net print \\hostname 3 /hold - остановка задания 3 на компьтере hostname.

Net share. Имеет очень много параметров и служит для управления общими ресурсами. Пожалуй, следует привести синтаксис в его полном варианте, так как команда - одна из самых частоиспользуемых:

sell> net share - выводит информацию об общедоступных ресурсах;

net share [имя_ресурса] - выдает информацио об отдельном ресурсе (максимальное число пользователей и др.);

net share [имя_ресурса=диск:путь [{/users:число|/unlimited}] [/remark:"текст"] [/cache: {manual|automatic|no}]] - созданние нового общего ресурса. Можно указать в качестве дополнительных опций максимальное количество пользователей (или максимально возможное /unlimited), а также комментарий к ресурсу;

net share [имя_ресурса [{/users:число|unlimited}] [/remark:"текст"] [/cache: {manual|automatic|no}]] - команда net share в таком виде может задать новые правила для пользования ресурсом.

net share [{имя_ресурса|диск:путь} /delete] - это просто удаление расшаренной папки.

Итак, папки расшаривать мы уже умеем, осталось научиться подключать общие ресурсы при помощи интерфейса командной строки. Сделать это, пожалуй, еще проще, чем рашаривать папки:-). Существует следующий способ (привожу общий синтаксис, т.к. он довольно сложен, а команда очень важна для практического использования): net use [{имя_устройства | *}] [\\имя_компьютера\ресурс[\том]] [{пароль | *}]] [/user:[имя_домена\]] [/user:[имя_домена_с_точкой\]имя_пользователя] [/user: [имя_пользователя@имя_домена_с_точкой] [/savecred] [/smartcard] [{/delete | /persistent:{yes | no}}]

Теперь пройдемся по параметрам. Имя устройства - имя, которое присваивается ресурсу после подключения, по этому имени вы потом сможете обратиться к нему как к локальному. "*" означает, что устройству будет присвоено "ближайшее возможное" имя (в зависимости от того, сколько у вас логических дисков). Кстати, если вы подключаете принтер, ему также можно задать имя (LTP1-LTP3). (По сути дела, вы подключаете сетевой диск с именем, указанным в этом параметре, и обращаться к нему можно так же, как к локальному логическому диску.) Том указывается в случае использования ресурсов NetWare. Пароль также можно задать здесь же или заставить вывести приглашение на его ввод (набрать "*"). Далее вам следует указать путь к ресурсу, который вы собираетесь использовать. После этого можно указать имя пользователя для подключения (если вы задали пароль и имя пользователя для доступа к ресурсу). Пользователя можно задать в различных формах, как видно из синтаксиса. Параметры, следующие после определения пользователей, означают следующее:

/savecred - сохранить введенные учетные данные для дальнейшего использования. Конечно, это удобно, и WinXP - довольно безопасная система, но настоятельно не рекомендую к использованию;

/smartcard - считывание учетных данных со смарт-карт. Вот только где они используются:-);

/delete - используется для удаления существующих подключений;

/persistent:{yes | no} - используется для управления постоянными подключениями. При выборе yes (/persistent:yes) сохраняет подключения и пытается восстанавливать их. По умолчанию берет последнее значение. В обратном случае подключения не восстанавливаются. Подключения без устройства не считаются постоянными;

net use [имя_устройства [/home[{пароль | *}] [/delete:{yes | no}]]" - подключение пользователя к его основному каталогу (соответственно с заданием пароля, если необходимо) при использовании /home либо отключение;

net use [/persistent:{yes | no}] - установка флага /persistent.

Теперь пример: shell> net use b: \\ginger\films /user:zavr@mentalzavr - подключаем сетевой диск с сервера ginger в папку films. Сетевой диск будет называтся b:\, данные для подключения таковы: пользователь zavr на mentalzavr. Удаление этого ресурса: shell> net use b: /delete.

Net time. Использование возможно только при запущенной Службе времени Windows. Служит для синхронизации часов с часами другого компьютера или сервером надежного времени RTS. Имеет следующие параметры:

net time [{\\имя_компьютера | /domain[:имя_домена] | /rtsdomain[:имя_домена]}] [/set] - присутствие /set означает синхронизацию часов локального компьютера с указанным компьютером, доменом или сервером RTS. Без /set выводит текущее время на указанном сервере. Напрмер: net time \\angelochki выводит время на хосте angelochki.

net time [\\имя_компьютера] [/querysntp] [/setsntp[:список_серверов_NTP]] - служит для задания серверов NTP (Network Time Protocol). Введенная без /setsntp выводит список серверов.

Для получения справки по командам, ключам и параметрам, кроме стандартного ("/?" после интересующей команды), существует еще один способ. Это net help. Пример его использования таков: shell> net help имя команды или shell> net имя_команды /help. Если вы вдруг получили какую-либо ошибку при работе с сетью, но не знаете, что она означает, посмотреть ее расшифровку можно следующим образом: shell> net helpmsg Nerror, где Nerror - номер ошибки. Например: shell> net helpmsg 53. Результатом этого будет строка с текстом всеми любимой ошибки:-): "Не найден сетевой путь".

Желаю вам удачи в изучении консоли, ведь это гораздо удобнее и быстрее, чем ждать, пока загрузится MMC, хоть на первый взгляд все и довольно сложно. Ведь даже обои на рабочем столе можно изменить при помощи консоли - могу поспорить, вы этого не знали!

Спичеков Александр aka MentALzavR,
Zavr6@mail.ru



© Компьютерная газета

полезные ссылки
Аренда ноутбуков
Ремонт ноутбуков в центре Минска