Иногда требуется выполнить некоторые команды на одном уровне, затем перейти на другой и снова вернуться на предыдущий уровень. Для выполнения таких переходов используются команды pushd и popd . Принцип переключения между контекстами основан на обработке очереди в соответствии с правилом "первым вошел - последним вышел" или first-in-last-out (FILO). Команда 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-сервера Googe в среде 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
3.6.Утилита NETSTAT.EXE
Утилита netstat.exe присутствует во всех версиях Windows, однако, существуют некоторые отличия используемых параметров командной строки и результатов ее выполнения, в зависимости от операционной системы. Используется для отображения TCP и UDP -соединений, слушаемых портов, таблицы маршрутизации, статистических данных для различных протоколов.
· -a - отображение всех активных соединений по протоколам TCP и UDP, а также, списка портов, которые ожидают входящие соединения (слушаемых портов).
· -b - отображение всех активных соединений по протоколам TCP и UDP, а также, списка портов, которые ожидают входящие соединения (слушаемых портов) с информацией об именах исполняемых файлов. Данный параметр применим для операционных систем Widows XP и старше.
· -e - отображение статистики Ethernet в виде счетчиков принятых и отправленных байт и пакетов.
· -n - отображение номеров портов в виде десятичных чисел.
· -o - отображение соединений, включая идентификатор процесса (PID) для каждого соединения.
· -p Protocol - отображение соединений для заданного протокола. Протокол может принимать значения tcp, udp, tcpv6, udpv6 . При использовании совместно с параметром -s в качестве протокола можно задавать tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6, ipv6.
· -s - отображение статистических данных по протоколам TCP, UDP, ICMP, IP , TCP over IPv6, UDP over IPv6, ICMPv6, и IPv6 . Если задан параметр -p , то статистика будет отбражатися только для выбранных протоколов.
· -r - отображение таблицы маршрутов. Эквивалент команды route print
· Interval - интервал обновления отображаемой информации в секундах.
· -v - отображать подробную информацию.
· /? - отобразить справку по использованию netstat
При использовании утилиты netstat.exe удобно пользоваться командами постраничного вывода (команда more), перенаправления стандартного вывода в файл ( > ) и поиска текста в результатах ( команда find).
· netstat -a | more - отобразить все соединения в постраничном режиме вывода на экран.
· netstat -a > C:\netstatall.txt - отобразить все соединения с записью результатов в файл C:\netstatall.txt.
· netstat -a | find /I "LISTENING" - отобразить все соединения со статусом LISTENING. Ключ /I в команде find указывает, что при поиске текста не нужно учитывать регистр символов.
· netstat -a | find /I "listening" > C:\listening.txt - отобразить все соединения со статусом LISTENING с записью результатов в файл C:\listening.txt.
Пример отображаемой информации:
Активные подключения
Имя Локальный адрес Внешний адрес Состояние
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
[ httpd.exe]
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
Не удается получить сведения о владельце
TCP 0.0.0.0:5800 0.0.0.0:0 LISTENING
[WinVNC.exe]
TCP 127.0.0.1:50197 127.0.0.1:50198 ESTABLISHED
[firefox.exe]
UDP 192.168.0.107:1900 *:*
SSDPSRV [svchost.exe]
. . .
Имя - название протокола.
Локальный адрес - локальный IP-адрес участвующий в соединении или связанный со службой, ожидающей входящие соединения (слушающей порт). Если в качестве адреса отображается 0.0.0.0 , то это означает - "любой адрес", т.е. в соединении могут использоваться все IP-адреса существующие на данном компьютере. Адрес 127.0.0.1 - это петлевой интерфейс, используемый в качестве средства IP протокола для взаимодействия между процессами без реальной передачи данных.
Внешний адрес - внешний IP-адрес, участвующий в создании соединения.
Состояние- состояние соединения. Состояние Listening говорит о том, что строка состояния отображает информацию о сетевой службе, которая ожидает входящие соединения по соответствующему протоколу на адрес и порт, отображаемые в колонке "Локальный адрес ". Состояние ESTABLISHED указывает на активное соединение. В колонке "Состояние" для соединений по протоколу TCP может отображаться текущий этап TCP-сессии определяемый по обработке значений флагов в заголовке TCP - пакета (Syn, Ask, Fin ... ). Возможные состояния:
· CLOSE_WAIT - ожидание закрытия соединения.
· CLOSED - соединение закрыто.
· ESTABLISHED - соединение установлено.
· LISTENING - ожидается соединение (слушается порт)
· TIME_WAIT - превышение времени ответа.
Имя программного модуля, связанного с данным соединением отображается, если задан параметр -b в командной строке при запуске netstat.exe.
3.6.2. Примеры использования:
· Получить список слушаемых портов и связанных с ними программ:
o netstat -a -b
o netstat -ab - параметры командной строки можно объединять. Параметр -ab эквивалентен -a -b
o netstat -a -n -b - отобразить список всех соединений с числовыми номерами портов
o netstat -anb - аналогично предыдущей команде.
o netstat -anbv - при использовании параметра -v отображается последовательность компонентов, участвующих в создании соединения.
· получить статистические данные:
o netstat -e - получить статистические данные для протокола Ethernet. Отображается суммарные значения принятых и полученных байт для всех сетевых адаптеров.
o netstat -e -v - кроме статистических данных, отображается информация о каждом сетевом адаптере.
o netstat -e -s - дополнительно к статистике Ethernet, отображается статистика для протоколов IP , ICMP , TCP , UDP.
o netstat -s -p tcp udp - получить статистику только по протоколам TCP и UDP.