Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307

    [VBS] Sostituire classe indirizzo IP

    Buonasera a tutti,
    mi serve uno script VBS che effettui le seguenti operazioni:

    1) rileva l'indirizzo IP del computer
    2) conserva in una variabile l'ultimo ottetto
    3) usando il comando netsh, assegna un nuovo indirizzo IP con una nuova classe ed il precedente ultimo ottetto (es.: sostituire 10.0.0.123 con 100.1.2.123, 10.0.0.56 con 100.1.2.56, ecc. ecc.), nuovi DNS/WINS ed un nuovo gateway

    Qualcuno ha idea di come fare?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Per trovare l' IP (o gli IP) vedi questo esempio

    http://www.robvanderwoude.com/vbstech_network_ip.php

    e approfondisci per modificare i valori...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Moderazione

    Tutti i linguaggi di "famiglia VB" sono trattati nell'apposito sotto-forum, sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307

    Re: Moderazione

    Originariamente inviato da MItaly
    Tutti i linguaggi di "famiglia VB" sono trattati nell'apposito sotto-forum, sposto.
    Chiedo scusa per non aver individuato subito il sotto-forum
    Il mio problema principale, è come invocare netsh da VBS.
    Qualcuno può darmi una mano su questo specifico aspetto?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché devi usare netsh ? Hai visto il link ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    Originariamente inviato da oregon
    Perché devi usare netsh ? Hai visto il link ?
    Una volta trovato l'IP, devo isolarne l'ultimo ottetto, e questo è facile:

    strLastOctect = Right(strIP, Len(strIP)-InStrRev(strIP,"."))

    A questo punto, lo script deve usare netsh per assegnare un nuovo indirizzo IP, di una nuova classe, conservando l'ultimo ottetto; in pratica: l'indirizzo 10.1.1.134, deve essere trasformato in 100.2.2.134, 10.1.1.59 in 100.2.2.59, e così via.
    Sempre tramite netsh, occorre assegnare DNS, WINS e gateway (che sono fissi).

  7. #7
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    Alla fin fine, con l'aiuto di S. Google, non era nemmeno troppo difficile:

    codice:
    'Usa il comando runas per poter eseguire lo script su Windows Vista/7/8
    Set WshShell = WScript.CreateObject("WScript.Shell")
    If WScript.Arguments.length = 0 Then
    	Set ObjShell = CreateObject("Shell.Application")
    	ObjShell.ShellExecute "wscript.exe", """" & _
    		WScript.ScriptFullName & """" &_
    		" RunAsAdministrator", , "runas", 1
    End If 
    
    'Recupera l'indirizzo IP
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set colItems = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
    Set colNetworkAdapters = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapter")
    
    Dim connectionName(32)
    
    iCount = 0
    For Each netAdapter in colNetworkAdapters
    	adapterMacAddress = netAdapter.MACAddress
    	If Not IsNull(netAdapter.NetConnectionID) Then
    	     'WScript.Echo netAdapter.NetConnectionID    & "  " & netAdapter.MACAddress
    	     connectionName(iCount) = netAdapter.NetConnectionID
    	     iCount = iCount + 1
    	End If
    Next
    
    iCount = 0
    For Each objItem In colItems
    	strIP = objItem.IPAddress(0)
    	'strName = objItem.Description(0)
    	
    	'Recupera l'ultimo ottetto
    	strLastOctect = Right(strIP, Len(strIP)-InStrRev(strIP,"."))
    	'WScript.Echo strIP & " " & strName		
    
    	'netsh interface ip set address name="Connessione alla rete locale (LAN) 2" source=static addr=100.1.2.57 mask=255.255.255.0 gateway=100.1.2.1
    	'netsh interface ip set dns name="Connessione alla rete locale (LAN) 2" source=static addr=100.1.2.202
    	'netsh interface ip add dns name="Connessione alla rete locale (LAN) 2" addr=100.1.2.204
    	'netsh interface ip set wins name="Connessione alla rete locale (LAN) 2" source=static addr=100.1.2.204
    	'netsh interface ip add wins name="Connessione alla rete locale (LAN) 2" addr=100.1.2.202
    
    	LANInterfaceName = connectionName(iCount)
    	newIPClass = "100.1.2."
    	strDNS1 = newIPClass & "202"
    	strDNS2 = newIPClass & "204"
    	strWINS1 = newIPClass & "204"
    	strWINS2 = newIPClass & "202"
    	strGateway = newIPClass & "1"
    
    	strNetshInterfaceCommand = "netsh interface ip set address name=" & """" & LANInterfaceName & """" & " source=static addr=" & newIPClass & strLastOctect & " mask=255.255.255.0 gateway=" & strGateway
    	strNetshDNS1Command = "netsh interface ip set dns name=" & """" & LANInterfaceName & """" & " source=static addr=" & strDNS1
    	strNetshDNS2Command = "netsh interface ip add dns name=" & """" & LANInterfaceName & """" & " addr=" & strDNS2
    	strNetshWins1Command = "netsh interface ip set wins name=" & """" & LANInterfaceName & """" & " source=static addr=" & strWINS1
    	strNetshWins2Command = "netsh interface ip add wins name=" & """" & LANInterfaceName & """" & " addr=" & strWINS2
    
    	Set oShell = WScript.CreateObject("WScript.Shell")
    	oShell.Run(strNetshInterfaceCommand)
    	oShell.Run(strNetshDNS1Command)
    	oShell.Run(strNetshDNS2Command)
    	oShell.Run(strNetshWINS1Command)
    	oShell.run(strNetshWINS2Command)
    	Set oShell = Nothing	
    
    	iCount = iCount + 1
    Next
    A me funziona; se qualcuno, per cortesia, può provare lo script, e rilevare eventuali problemi...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.