none
Script associar computador a servidor WSUS por faixa de IP RRS feed

  • Pergunta

  • Bom dia,

    Senhores sou administrador de uma rede com 15 servidores WSUS espalhados por várias localidades. Hoje a associação dos meus computadores para os servidores WSUS é feita por GPOs separadas para cada localidade.

    O problema disso é que os computadores são movidos fisicamente de local e continuam na mesma OU no ad, consequentemente sendo associados ao servidor WSUS da localidade anterior.

    Estou precisando de um help para a criação de script geral que associe o servidor de WSUS correto baseado na faixa de IP. Com isso posso colocar todos os computadores em uma unica OU e na hora do carregamento do computador o script irá associar ao servidor correto baseado na faixa de IP.

    Alguém já passou por uma situação ou tem uma idéia de como eu poderia fazer isso?

     

    Carlos Bulhões - MCDST - MCSA 

    sexta-feira, 5 de novembro de 2010 12:28

Respostas

  • Carlos,

    Segue um script que identifica a subnet.

    'subnet.vbs - displays the subnet for the computer's (or given) IP
    ' addresses and subnet masks
    'http://myitforum.com/cs2/blogs/jgilbert/archive/2007/08/21/how-to-determine-a-client-s-subnet-mask-when-defining-ip-subnet-boundaries.aspx
    
    
    select case subnetit
    
    	case "192.168.1.0"
    		wscript.echo "192.168.1.0"
    
    	case "10.0.0.0"
    		wscript.echo "10.0.0.0"
    
    	case else
    	
    		wscript.echo "Não tem opção para a subnet " & subnetit
    		
    End select
    
    
    
    '--------------------------------------------------------------
    function SubNetIt(  )
    	Set loc = CreateObject( "WbemScripting.SWbemLocator" )
    	Set WbemServices = loc.ConnectServer( ,"root\cimv2" )
    	Set Adapters=WbemServices.ExecQuery( "Select * FROM" & _
    		" Win32_NetworkAdapterConfiguration" )
    
    	For Each Adapter in Adapters
    		If NOT IsNull( Adapter.IPAddress) Then
    			Address= Adapter.IPAddress(0)
    			Subnet=Adapter.IPSubnet(0)
    		
    			'WScript.Echo "Description: ", Adapter.Description
    			
    			'WScript.Echo ""
    			exit for	
    		End If
    	Next
    
    
    	'WScript.Echo "IP address: ", Address
    	'WScript.Echo "subnet mask: ", Subnet
    	dim addressbytes(4)
    	dim subnetmaskbytes(4)
    	i=0
    	period = 1
    	while period<>len( address ) + 2
    		prevperiod=period
    		period = instr( period+1, address, "." ) + 1
    		if period = 1 then period = len( address ) + 2
    		addressbyte = mid( address, prevperiod, period-prevperiod-1 )
    		addressbytes(i)=addressbyte
    		i=i+1
    	wend
    	i=0
    	period = 1
    	while period<>len( subnet ) + 2
    		prevperiod=period
    		period = instr( period+1, subnet, "." ) + 1
    		if period = 1 then period = len( subnet ) + 2
    		subnetmaskbyte = mid( subnet, prevperiod, period-prevperiod-1)
    		subnetmaskbytes(i)=subnetmaskbyte
    		i=i+1
    	wend
    	subnet=""
    	for i=0 to 3
    		subnet = subnet & (addressbytes(i) AND subnetmaskbytes(i)) & "."
    	next
    	subnet = left( subnet, len(subnet)-1 )
    	subnetit = subnet
    End function

    Ref.:

    How to determine a client's subnet mask when defining IP subnet boundaries

    http://myitforum.com/cs2/blogs/jgilbert/archive/2007/08/21/how-to-determine-a-client-s-subnet-mask-when-defining-ip-subnet-boundaries.aspx


    Fábio de Paula Junior

    quinta-feira, 14 de novembro de 2013 14:09
    Moderador

Todas as Respostas

  •  

    1) Opção 1, GPO por site

    Você poderia criar GPO por site ao invés de ser por OU. (Considerando que cada localidade está em um site diferente)

     

    2) Opção 2, por script

    Criar script de start up que verifique o IP, identifique a sub-rede e configure a chave de registro que define o grupo do WSUS.


    Fábio de Paula Junior
    sexta-feira, 5 de novembro de 2010 15:08
    Moderador
  • É justamento essa 2ª opção que eu estou querendo fazer. Mas gostaria de um apoio dos mestres em script para me ajudar nessa demanda.
    sexta-feira, 5 de novembro de 2010 20:32
  • Carlos,

    Segue um script que identifica a subnet.

    'subnet.vbs - displays the subnet for the computer's (or given) IP
    ' addresses and subnet masks
    'http://myitforum.com/cs2/blogs/jgilbert/archive/2007/08/21/how-to-determine-a-client-s-subnet-mask-when-defining-ip-subnet-boundaries.aspx
    
    
    select case subnetit
    
    	case "192.168.1.0"
    		wscript.echo "192.168.1.0"
    
    	case "10.0.0.0"
    		wscript.echo "10.0.0.0"
    
    	case else
    	
    		wscript.echo "Não tem opção para a subnet " & subnetit
    		
    End select
    
    
    
    '--------------------------------------------------------------
    function SubNetIt(  )
    	Set loc = CreateObject( "WbemScripting.SWbemLocator" )
    	Set WbemServices = loc.ConnectServer( ,"root\cimv2" )
    	Set Adapters=WbemServices.ExecQuery( "Select * FROM" & _
    		" Win32_NetworkAdapterConfiguration" )
    
    	For Each Adapter in Adapters
    		If NOT IsNull( Adapter.IPAddress) Then
    			Address= Adapter.IPAddress(0)
    			Subnet=Adapter.IPSubnet(0)
    		
    			'WScript.Echo "Description: ", Adapter.Description
    			
    			'WScript.Echo ""
    			exit for	
    		End If
    	Next
    
    
    	'WScript.Echo "IP address: ", Address
    	'WScript.Echo "subnet mask: ", Subnet
    	dim addressbytes(4)
    	dim subnetmaskbytes(4)
    	i=0
    	period = 1
    	while period<>len( address ) + 2
    		prevperiod=period
    		period = instr( period+1, address, "." ) + 1
    		if period = 1 then period = len( address ) + 2
    		addressbyte = mid( address, prevperiod, period-prevperiod-1 )
    		addressbytes(i)=addressbyte
    		i=i+1
    	wend
    	i=0
    	period = 1
    	while period<>len( subnet ) + 2
    		prevperiod=period
    		period = instr( period+1, subnet, "." ) + 1
    		if period = 1 then period = len( subnet ) + 2
    		subnetmaskbyte = mid( subnet, prevperiod, period-prevperiod-1)
    		subnetmaskbytes(i)=subnetmaskbyte
    		i=i+1
    	wend
    	subnet=""
    	for i=0 to 3
    		subnet = subnet & (addressbytes(i) AND subnetmaskbytes(i)) & "."
    	next
    	subnet = left( subnet, len(subnet)-1 )
    	subnetit = subnet
    End function

    Ref.:

    How to determine a client's subnet mask when defining IP subnet boundaries

    http://myitforum.com/cs2/blogs/jgilbert/archive/2007/08/21/how-to-determine-a-client-s-subnet-mask-when-defining-ip-subnet-boundaries.aspx


    Fábio de Paula Junior

    quinta-feira, 14 de novembro de 2013 14:09
    Moderador