Продолжаем рассматривать сетевые утилиты командной строки Windows, сегодня у нас в фокусе NBTSTAT и мега-утилита netsh.
Утилита NBTSTAT
Команда NBTSTAT позволяет получить статистику протокола NetBIOS over TCP/IP (NetBT), таблицу имен локальных и удаленных компьютеров и содержимое кэш NetBIOS имен. Применение NBTSTAT позволяет принудительно обновить кэш NetBIOS-имен компьютеров и имена, зарегистрированные с помощью серверов Windows Internet Name Service (WINS).
Синтаксис:
nbtstat[-aRemoteName] [-AIPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]
Параметры командной строки:
-a RemoteName - отображает таблицу имен удаленного компьютера. NetBIOS-имена соответствуют перечню NetBIOS-приложений, выполняющихся на удаленном компьютере.
-A IPAddress - то же самое, что и в предыдущем случае, но вместо имени удаленного компьютера используется его IP-адрес
. -c - отображает кэш имен NetBIOS и соответствующих им IP-адресов.
-n - отображает таблицу NetBIOS-имен на локальном компьютере. Состояние "Зарегистрирован" означает, что имя зарегистрировано с использованием широковещательного запроса или с помощью сервера WINS.
-r - отображает статистику разрешения NetBIOS-имен. На компьютерах под управлением Windows XP и старше, выдается раздельная статистика о разрешении имен с помощью широковещетельной рассылки и с помощью сервера имен WINS.
-R - очистка кэш NetBIOS-имен и загрузка данных из секции #PRE файла LMHOSTS.
-RR - очистка кэш NetBIOS - имен на локальном компьютере и их повторная регистрация с использованием сервера WINS.
-s - отображает статистику NetBIOS - сессий между клиентом и сервером и NetBIOS-имена удаленных узлов.
-S - отображает статистику сессий между клиентом и сервером и IP-адреса удаленных узлов.
Interval - интервал обновления отображаемых данных в секундах. Для прекращения автоматического обновления используется комбинация клавиш CTRL+C
/? - отобразить справку по использованию NBTSTAT.
Примеры использования: nbtstat -n - вывести список зарегистрированных NetBIOS-имен на локальном компьютере.
nbtstat -a SERVER - вывести список зарегистрированных NetBIOS-имен на компьютере SERVER.
nbtstat -A 192.168.1.1 - вывести список зарегистрированных NetBIOS-имен на удаленном компьютере с IP-адресом 192.168.1.1 .
nbtstat -RR - выполнить очистку и перерегистрацию NetBIOS-имен на локальном компьютере.
Утилита NETSH
Утилита сетевой оболочки NETSH (NETwork SHell) - наиболее полное и функциональное стандартное средство управления сетью с использованием командной строки в среде Windows XP и старше. Набор внутренних команд сетевой оболочки пополняется с появлением новых версий операционной системы, что необходимо учитывать при работе в локальной сети с различными ОС. Так, например, команда уровня wlan (netsh wlan - управление беспроводной сетью) может использоваться на компьютерах под управлением Windows Vista и старше и отсутствует в Widows XP. Синтаксис используемых команд и параметров также может различаться в разных операционных системах семейства Windows.
При запуске NETSH.EXE без параметров на экран выводится приглашение к вводу внутренних команд оболочки. Набор команд представляет собой многоуровневую структуру, позволяющую выполнять необходимые действия в выбранном контексте. При вводе знака вопроса ? можно получить краткую справку по доступному перечню команд на данном уровне. Ввод команды данного уровня со знаком вопроса вызовет отображение справки по ее использованию. Аналогичную справку можно получить, введя определенную команду и, после перехода на уровень ее выполнения, ввести знак вопроса. При необходимости, можно выполнить нужное действие без использования интерактивного режима, указав в качестве параметров командной строки последовательный набор внутренних команд NETSH и необходимых параметров. Например:
netsh advfirewall show global последовательно выполняется команда первого уровня advfirewall, в ее контексте, команда следующего уровня show с параметром global.
Команды NETSH можно выполнить и на удаленном компьютере с использованием подключения по локальной сети. Netsh также предоставляет возможность выполнения сценариев, представляющих собой группу команд в текстовом файле, выполняемых в режиме очередности на определенном компьютере. В целом, возможности NETSH настолько обширны, что трудно найти сетевую задачу, которую невозможно было бы решить с использованием данной утилиты.
Синтаксис:
NETSH.EXE [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *] [Command | -f ScriptFile]
-a AliasFile - не завершать работу а перейти к приглашению ввода команд после выполнения AliasFile. AliasFile - имя текстового файла, в котором содержатся одна или несколько команд netsh.
-c Context - изменить контекст (уровень) команд netsh.
-r RemoteMachine - выполнять команды netsh на удаленном компьютере. В качестве RemoteMachine может использоваться имя или IP-адрес.
[-u DomainName\]UserName - имя пользователя для подключения к удаленному компьютеру. Если не задано, то используется текущее имя пользователя.
-p Password пароль для подключения к удаленному компьютеру.
Command - команда оболочки netsh , которую необходимо выполнить.
-f ScriptFile - аналогично ключу -a, но после выполнения команд файла сценария Scriptfile, работа netsh завершается.
Пример полученной справки об использовании по команде netsh ? или вводе знака вопроса на приглашение при запуске netsh без параметров в среде ОС Windows 7:
Применимы следующие команды:
? - Отображение списка команд.
add - Добавление элемента конфигурации в список элементов.
advfirewall - Изменения в контексте 'netsh advfirewall'.
branchcache - Изменения в контексте 'netsh branchcache'.
bridge - Изменения в контексте 'netsh bridge'.
delete - Удаление элемента конфигурации из списка элементов.
dhcpclient - Изменения в контексте 'netsh dhcpclient'.
dnsclient - Изменения в контексте 'netsh dnsclient'.
dump - Отображение сценария конфигурации.
exec - Запуск файла сценария.
firewall - Изменения в контексте 'netsh firewall'.
help - Отображение списка команд.
http - Изменения в контексте 'netsh http'.
interface - Изменения в контексте 'netsh interface'.
ipsec - Изменения в контексте 'netsh ipsec'.
lan - Изменения в контексте 'netsh lan'.
mbn - Изменения в контексте 'netsh mbn'.
namespace - Изменения в контексте 'netsh namespace'.
nap - Изменения в контексте 'netsh nap'.
netio - Изменения в контексте 'netsh netio'.
p2p - Изменения в контексте 'netsh p2p'.
ras - Изменения в контексте 'netsh ras'.
rpc - Изменения в контексте 'netsh rpc'.
set - Обновление параметров конфигурации.
show - Отображение информации.
trace - Изменения в контексте 'netsh trace'.
wcn - Изменения в контексте 'netsh wcn'.
wfp - Изменения в контексте 'netsh wfp'.
winhttp - Изменения в контексте 'netsh winhttp'.
winsock - Изменения в контексте 'netsh winsock'.
wlan - Изменения в контексте 'netsh wlan'.
Доступны следующие дочерние контексты:
advfirewall branchcache bridge dhcpclient dnsclient firewall http interface ipsec lan mbn namespace nap netio p2p ras rpc trace wcn wfp winhttp winsock wlan
Чтобы получить справку по команде, введите эту команду, затем пробел и "?"
Примеры практического использования NETSH.
Как получить справку в виде текстового файла для выбранного контекста NETSH ?
Для примера, нужно получить справку в контексте работы с конфигурацией беспроводной сети wlan . Последовательно выполняем команды
netsh
wlan
set file open C:\wlanhelp.txt
?
set file close
В данном примере, команда set file open C:\wlanhelp.txt устанавливает режим вывода консольных сообщений в файл с именем C:\wlanhelp.txt. После установки данного режима, все, что вводится с клавиатуры и отображается на экране, будет записано в указанный текстовый файл. Таким образом, можно создавать файлы журналов отдельных сессий использования netsh . Вместо параметра open можно использоватьappend и имя уже существующего файла журнала. В таком режиме данные будут записываться в конец существующего текстового файла.
Как сохранить и восстановить сетевую конфигурацию ?
Команда dump создает сценарий, который содержит текущую конфигурацию. Если данные сценария сохранить в текстовый файл, то при необходимости, его можно будет использовать для восстановления измененных параметров с помощью команды загрузки и выполнения скриптов exec.
Для сохранения используется команда:
dump Имя файла сценария
Для восстановления настроек из файла сценария используется команда:
exec Имя файла сценария
В некоторых версиях netsh команда dump с указанием имени файла почему-то не работает. Однако, для сохранения конфигурации можно воспользоваться способом, описанным выше - использовать запись в файл командой set file open C:\mynet.sav .
netsh
set file open C:\mynet.sav
dump
quit
Остается только слегка исправить полученный файл сценария C:\mynet.sav - удалить 1-ю строчку с командой dump и последние - с приглашением netsh и (или) командой quit
Второй способ - использовать netsh с перенаправлением вывода команды dump в файл:
netsh dump > C:\mynet.sav
Для сохранения отдельного контекста конфигурации можно воспользоваться командой dump на соответствующем уровне :
netsh interface dump > C:\myinterf.cnf - сохранить настройки сетевых интерфейсов в виде сценария netsh в файле C:\myinterf.cnf
Для восстановления сетевой конфигурации можно воспользоваться
netsh exec C:\mynet.sav
Обычно, после восстановления сетевых настроек из файла сценария , требуется перезапуск некоторых сетевых служб, а желательнее - выполнить перезагрузку Windows
Как выполнить переключение между контекстами netsh ?
Иногда требуется выполнить некоторые команды на одном уровне, перейти на другой, и снова вернуться на предыдущий. Для выполнения таких переходов используются команды pushd и popd . Принцип переключения между контекстами основан на обработке очереди в соответствии с правилом "первым вошел - последним вышел" или first-in-last-out (FILO) stack. Команда pushd запоминает текущий уровень (контекст) в стеке, а команда popd извлекает его из стека. Например:
netsh> - приглашение первого уровня команды nesh
pushd - введена команда запоминания контекста в стек
netsh> - приглашении netsh не меняется, контекст прежний.
interface ipv4 - переход на уровень interface и уровень ipv4
netsh interface ipv4> - соответственно, изменилась строка приглашения, отображая текущий контекст выполнения команды netsh
set address local static 192.168.1.9 255.255.255.0 192.168.1.1 1 - команда, меняющая настройки IP протокола.
netsh interface ip> - контекст выполнения команды, отображаемый в приглашении не изменяется.
popd - команда извлечения из стека запомненного контекста.
netsh > - строка приглашения изменилась, отображая текущий контекст выполнения команды netsh .
Без использования команд pushd и popd практически невозможно полноценное использование сценариев netsh.
Как найти примеры выполнения сетевых настроек с помощью netsh ?
Кроме сохранения и восстановления настроек использование команды dump позволяет получить примеры в виде сценария, соответствующего текущей конфигурации. Например, дамп секции interface дает пример выполнения команд netsh в контексте настроек сетевых интерфейсов. Пример сценария :
#========================
# Конфигурация интерфейса
#========================
pushd interface
reset all
popd
# Конец конфигурации интерфейса
. . .
# -----------------------------------------
# Настройка IP-интерфейсов
# -----------------------------------------
pushd interface ip
# Интерфейс настройки IP для "Подключение по локальной сети"
set address name=" Подключение по локальной сети " source=static addr=192.168.0.1 mask=255.255.255.0
set dns name="Подключение по локальной сети" source=static addr=192.168.0.2 mask=255.255.255.0
set wins name=" Подключение по локальной сети " source=static addr=192.168.0.9
Строки сценария, начинающиеся с символа #, являются комментариями. Команды pushd и popd позволяют определить контекст исполнения других команд netsh. Команды настроек конфигурации плюс справочная информация самой netsh позволяют довольно легко получить командную строку для выполнения отдельных сетевых настроек:
- Сменить IP-адрес в командной строке:
netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0
name - имя сетевого подключения
source - static - статический IP-адрес. Возможно значение DHCP, если адрес назначается автоматически сервером DHCP.
addr - значение IP-адреса
mask - значение маски сети.
Для получения сведений о дополнительных возможностях конфигурирования сетевых интерфейсов можно перейти на соответствующий контекст выполнения netsh, и выполнить интересующую команду с параметром ?. Например:
netch - старт NETSH
interface - перейти в контекст настройки сетевых интерфейсов interface
ip - перейти в контекст настройки протокола IP
set file open C:\setaddr.txt - записывать сессию в файл. Эта команда используется, если нужна справочная информация в виде текстового файла .
set address ? выдать справку по использованию set address
set file close - закрыть файл справки.
quit - завершить работу с netsh
Для Windows Vista / Windows 7 синтаксис будет немного отличаться, уровню ip будет соответствовать уровень ipv4 :
netch - старт NETSH
interface - перейти в контекст настройки сетевых интерфейсов interface
ipv4 - перейти в контекст настройки протокола IP
set file open C:\setaddr.txt - записывать сессию в файл. Эта команда используется, если нужна справочная информация в виде текстового файла .
set address ? выдать справку по использованию set address
set file close
quit - завершить работу с netsh
Пример синтаксиса для смены адреса DNS-сервера в настройках сетевого подключения "Подключение по локальной сети 2" на адрес публичного DNS-сервера Googl в среде Windows 7:
netsh interface ipv4 set dnsservers name="Подключение по локальной сети 2" static 8.8.8.8 primary
Из информации файла справки следует, что возможно использование параметров командной строки netsh без указания ключевых слов:
netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1
Аналогично, без указания ключевых слов:
netsh interface ip set address name="Подключение по локальной сети" static 192.168.0.58 255.255.255.0 192.168.0.1 1
При изменении одного из параметров настроек необходимо указывать и остальные. Например, только для изменения адреса шлюза по умолчанию недостаточно выполнить команду
netsh interface ip set address name="Подключение по локальной сети" gateway=192.168.0.1 gwmetric=1
При ее выполнении отсутствующие параметры (IP-адрес и маска) будут сброшены. Для правильной смены шлюза по умолчанию команда должна быть следующей:
netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.0.58 mask=255.255.255.0 gateway=192.168.0.1 gwmetric=1
Продолжение следует.
No comments:
Post a Comment
А что вы думаете по этому поводу?