Como posso executar um script quando minha conexão de rede muda?

6

Eu gostaria de criar um script para fazer várias coisas quando a conexão de rede mudar. Por exemplo, se a máquina se conecta à rede do meu escritório, posso desejar:

  • silencia a si mesmo
  • altere seu DNS
  • altere suas configurações de proxy
  • alterar impressora padrão

Então, quando a máquina está fora da rede do escritório, ela pode reverter alguns deles.

Presumivelmente, a "rede ativa" seria baseada no endereço IP / gateway range ou no nome da rede WIFI, etc.

Você tem alguma ferramenta recomendada para realizar isso? Eu posso ver algo assim sendo aplicável a muitos profissionais de TI, então tenho certeza de que há algumas boas dicas por aí.

Note que isto é desejado para funcionar quando a rede muda - não apenas quando o usuário faz logon / logoff.

    
por Michael Haren 15.06.2009 / 20:23

6 respostas

3

O serviço "Reconhecimento de local de rede" ( link ) no Windows XP (e 2000? Eu não me lembro ...) e para cima permitirá essa funcionalidade, mas eu não encontrei onde alguém escreveu um aplicativo para tirar proveito disso. Eu adoraria codificar alguma coisa, mas não tenho ciclos de reserva suficientes para começar a pensar nisso.

Isso não seria uma pequena coisa simples do VBScript, mas também não seria uma grande codificação. Talvez alguém possa entender a ideia e correr com ela. Há até mesmo código de amostra no link .

Houve várias vezes que eu queria essa funcionalidade, e acho que há mais do que algumas pessoas que gostariam de ver isso.

    
por 15.06.2009 / 20:29
4

Você pode fazer isso usando o Agendador de Tarefas :

  1. Clique com o botão direito do mouse na "Biblioteca do Agendador de Tarefas"
  2. Clique em "Criar tarefa"
  3. Para o campo "Nome:", escreva o nome da sua nova tarefa.
  4. Verifique se a área "Opções de segurança" tem caixas de seleção onde você deseja que elas sejam.
  5. Na guia "Triggers", clique em "Novo ..."
  6. Selecione "Começar a tarefa:" = > "Em um evento"
  7. Selecione "Log:" = > "Microsoft-Windows-NetworkProfile / Operational"
  8. Selecione "Fonte:" = > "NetworkProfile"
  9. Escreva "ID do evento:" = > 10000
  10. OK esta caixa de diálogo.
  11. Na guia "Ações", clique em "Novo ..."
  12. Selecione "Ação:" = > "Iniciar um programa"
  13. Para "Programa / script:", navegue até Seu arquivo de script favorito.
  14. OK esta caixa de diálogo.
  15. Configure a guia "Condições" com relação às condições "Ocioso", "Energia CA" etc. A seu gosto.
  16. Faça também a configuração na guia "Configurações".
  17. OK, tudo feito aqui.
  18. Teste o novo evento.

Apenas no caso, existem também eventos para o computador "Suspend" e "Resume" disponíveis. Eu, por exemplo, uso-os para parar e reiniciar o Hamachi nesses eventos, pois, do contrário, parece haver problemas na minha máquina.
Para o computador "Suspender" Você pode usar o Registro "Microsoft-Windows-Kernel-Power / Termo-operacional", Origem "Kernel-Power" e o Event ID é 42.
Para o computador "Resume" Você pode usar o log "System", Source "Power-Troubleshooter" e o Event ID é 1.

Para o login / logoff do usuário, não sei eventos no Agendador de Tarefas (mas acredito que também estejam disponíveis), mas você pode configurá-lo aqui:

  1. Inicie gpedit.msc
  2. Abra "Configuração do usuário"
  3. Abra "Configurações do Windows"
  4. Clique em "Scripts (Logon / Logoff)"
  5. No painel direito Você pode atribuir scripts para eventos "Logon" e "Logoff". Observe que, se você atribuir vários scripts, não presuma que eles sejam executados de forma síncrona. Eles não podem. Para este caso, use um único script, que chama outros scripts em seqüência. Eu não verifiquei sob qual conta esses scripts são executados - é usuário ou sistema?

Você pode fazer coisas semelhantes para os eventos "Inicialização" e "Desligar" do computador na pasta "Configuração do Computador" na mesma janela. O script de inicialização é executado na conta do sistema antes que o usuário faça logon.

    
por 03.08.2013 / 17:31
1

Eu tive algum sucesso com Perfis Net antes.

    
por 15.06.2009 / 21:05
1

Usando a versão 2 do framework .NET, é possível usar o namespace System.Net.NetworkInformation. Com isso, você pode determinar:

disponibilidade de rede: NetworkAvailabilityChangedEventHandler () alterações de endereço de rede: NetworkAddressChangedEventHandler () ipaddress: IPAddressInformation

e assim por diante.

Quanto disso está disponível por meio do powershell, eu não sei, porque não o uso. Mas eu escrevi um aplicativo de bandeja vb.net muito simples que monitora a disponibilidade da rede e se conecta a um compartilhamento de rede quando a rede está disponível. Se você estiver interessado no esqueleto do código, me avise.

    
por 09.09.2009 / 10:28
1

Esta é uma resposta lateral e parcial (e nem mesmo documentada porque não consigo encontrar o artigo original), mas tenho certeza de que o Windows 7 tem uma folha de propriedades no objeto da impressora, permitindo que você altere padrões dependendo da sub-rede.

Também adoraria ver as funcionalidades que abordam o resto da sua lista.

    
por 09.09.2009 / 22:13
0

Você pode criar um arquivo em lote que leia os resultados de um comando ipconfig e executá-lo a cada 5 segundos ou mais ...

    
por 15.06.2009 / 20:29