Estou tentando descobrir como escrever um script que me permita atribuir arbitrariamente e remover um endereço IP secundário de um sistema. Estou mais confortável com scripts em lote, então prefiro me concentrar em soluções para isso, se for possível.
Tenho certeza de que descobri como usar a entrada do usuário e usá-la para configurar um novo endereço IP e gateway.
O script em lote abaixo é escrito para uma interface chamada "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
O PAUSE
é inserido para permitir uma oportunidade de verificar erros em netsh
antes que a janela do console saia automaticamente.
Tenho certeza de que o script poderia usar algumas instruções extras para verificação de erros (para contornar entradas de usuário vazias ou validar se as entradas correspondem ao padrão de um endereço IP). Mas o que me preocupa em descobrir agora é como limpar os endereços IP secundários definidos anteriormente.
Uma opção fácil seria simplesmente definir o script para limpar todos os IPs toda vez e ter uma linha pré-gravada que configure automaticamente o IP principal antes de solicitar o secundário. Idealmente, gostaria que o script funcionasse apenas em IPs secundários.
A opção dois é alterar a última linha do script acima para o seguinte:
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%
No entanto, isso exige que o script não seja terminado de maneira anormal durante o PAUSE
. Não é exatamente algo em que você possa confiar.
Outra opção seria ter o script armazenando os IPs secundários que ele configura em algum lugar permanente, para que ele possa extrair os valores posteriormente e trabalhar apenas com eles. É fácil colocar os valores em armazenamento permanente ( ECHO "%NEW-IPADDR%" > SecondaryIP.txt && ECHO "%NEW-MASK%" >> SecondaryIP.txt && ECHO "%NEW-GW%" >> SecondaryIP.txt
), mas agora tenho dois problemas:
- Não sei como obter os dados desse arquivo de texto, de uma forma que possa ser usada pelo script em lote. (Tenho certeza que isso pode ser facilmente corrigido).
- Isso depende do script ser a única coisa que toca o IP secundário. Um pouco mais confiável do que o script saindo normalmente, mas ainda não chega a 100%.
A opção ideal seria um script que possa reconhecer um "IP Primário" em oposição a um "IP Secundário" e somente trabalhar no segundo. Existe uma maneira de fazer isso?
Eu preciso de um método que seja compatível com uma versão padrão do Windows XP ou posterior, com pouco ou nenhum uso de ferramentas de terceiros. Embora eu prefira fazer isso em lote, também estou interessado em aprender mais sobre o PowerShell e ele está instalado nos sistemas em que usarei isso. Portanto, as soluções baseadas no PowerShell também são bem-vindas.