Я пытаюсь выяснить, как написать скрипт, который позволит мне произвольно назначать и удалять дополнительный IP-адрес для системы. Мне больше всего нравится пакетный скриптинг, поэтому я бы предпочел сосредоточиться на решениях для этого, если это возможно.
Я почти уверен, что выяснил, как принять пользовательский ввод и использовать его для настройки нового IP-адреса и шлюза.
Пакетный скрипт ниже написан для интерфейса с именем "LAN".
SET /P NEW-IPADDR="Enter IP:"
SET /P NEW-MASK="Enter Subnet Mask:"
SET /P NEW-GW="Enter Gateway:"
netsh interface ip add address name=LAN addr=%NEW-IPADDR% mask=%NEW-MASK% gateway=%NEW-GW% gwmetric=0
PAUSE
PAUSE
вставлена, чтобы дать возможность проверить наличие ошибок в netsh
перед автоматическим выходом из окна консоли.
Я уверен, что скрипт может использовать некоторые дополнительные операторы для проверки ошибок (для обхода пустых пользовательских вводов или проверки того, что входные данные соответствуют шаблону IP-адреса). Но сейчас я беспокоюсь о том, как очистить ранее установленные вторичные IP-адреса.
Одним из простых вариантов было бы просто настроить сценарий на очистку всех IP-адресов каждый раз и иметь предварительно записанную строку, которая автоматически устанавливает первичный IP-адрес, прежде чем запрашивать вторичный. Хотя в идеале я бы хотел, чтобы скрипт работал только на вторичных IP-адресах.
Второй вариант - изменить последнюю строку приведенного выше сценария следующим образом:
ECHO "Secondary IP address configured. Press any key to remove secondary IP."
PAUSE
netsh interface ip delete address name=LAN addr=%NEW-IPADDR% gateway=%NEW-GW%
Однако для этого необходимо верить, что сценарий не будет аварийно завершен во время PAUSE
. Не совсем то, на что вы действительно можете положиться.
Другой вариант заключается в том, чтобы скрипт сохранял вторичные IP-адреса, которые он настраивает где-то постоянными, чтобы он мог получать значения позже и работать только с ними. Достаточно просто получить значения в постоянное хранилище (ECHO "%NEW-IPADDR%" > SecondaryIP.txt && ECHO "%NEW-MASK%" >> SecondaryIP.txt && ECHO "%NEW-GW%" >> SecondaryIP.txt
) но сейчас у меня две проблемы:
- Я не знаю, как извлечь данные из этого текстового файла таким образом, чтобы его можно было использовать в пакетном скрипте. (Я уверен, что это легко можно исправить.)
- Это зависит от того, является ли скрипт единственным, что касается вторичного IP. Немного более заслуживающий доверия, чем скрипт, обычно завершающий работу, но все же не совсем на 100%.
Идеальным вариантом будет сценарий, который может распознавать "Первичный IP" в отличие от "Вторичного IP" и работать только с последним. Есть ли способ сделать это?
Мне нужен метод, который совместим со стандартной сборкой Windows XP или более поздней, практически без использования сторонних инструментов. Хотя я предпочел бы сделать это в пакетном режиме, мне также интересно узнать больше о PowerShell, и он установлен в системах, где я буду использовать это. Итак, решения на базе PowerShell также приветствуются.