Qual'è la cosa che al giorno d'oggi su un computer non ne possiamo proprio fare a meno? Sbagliato... non è Facebook. Si tratta ovviamente della rete. Chi fa uso di dispositivi portatili: come laptop, conosce il disagio causato dal trovarsi connesso ad una rete con i parametri TCP/IP errati, perchè riferiti ad un'altra rete. E il DHCP in molti casi non ci toglie questo problema dal groppone. Se ci serve un IP statico preciso o il DHCP è configurato a regola d'arte oppure non ce ne facciamo niente.
Pensate a quei 2 minuti persi per entrare nel menù della scheda di rete e modificare IP, gateway, DNS. Ebbene io ora vi dico che tutto questo sta per finire :D

Premetto che esistono moltissimi programmi che creano profili per le schede di rete ( ad esempio Intel Proset/Wireless ). Ma voi sapete quanto io sia riluttante ad installare software inutile che funzioni ininterrottamente in background quando il sistema operativo ci dà nativamente tutti gli strumenti per risolvere il problema. :)

Quindi ecco due soluzioni. L'una vale l'altra. La prima è una soluzione basata su VBScript. Per l'occasione ho rispolverato le mie conoscenze su questo linguaggio di scripting. L'altra invece si basa su netsh, un'utilità di sistema, disponibile dalla cmd di Windows. Vediamole:

VBScript is the way!!!

L'archivio rar che trovate qui sotto contiene due file vbs, dhcp.vbs e static.vbs. Prima di eseguirli dovete ovviamente impostare i parametri desiderati.

dhcp-and-static-vbs-script (882)

La prima cosa che vi serve è il nome della scheda di rete a cui applicare lo script. Questo lo potete trovare in "Pannello di controllo -> Centro di connessioni di rete e condivisione -> Modifica impostazioni scheda ( menù a sinistra )". Prendete il nome corretto, come nella foto. Lo script funziona con il nome della scheda di rete, non con quello della connessione.

Apriamo il file dhcp.vbs con un editor di test qualsiasi ( Notepad++, non mi stuferò mai di far pubblicità a questo software :D ) ed inseriamo il nome della scheda al posto di "HERE THE NAME" in questo blocco:

Il DHCP è ok. Passiamo ora al file static.vbs.
Qui dovremmo inserire, nome scheda, indirizzo ip, subnet mask, gateway, DNS ( primario e, opzionale, il secondario ).

Facendo doppio click sul file dhcp.vbs la scheda di rete da voi scelta sarà impostata su modalità DHCP ( IP e DNS ). Un popup vi confermerà che il dhcp è stato attivato.
Il secondo file, static.vbs, una volta eseguito imposterà la scheda su IP statico. Anche in questo caso sarete notificati da un popup sull'effettiva modifica.

Per gestire più reti vi basterà salvare lo stesso file con parametri diversi. Con un semplice doppio click varierete le impostazioni della scheda di rete secondo le vostre esigenze. ;)

I due script dovrebbero funzionare anche su Windows XP e Windows Vista.

netsh, un po' meno geek ma ugualmente efficace

Oltre agli script vbscript che ho creato, i parametri delle schede di rete si possono modificare utilizzando i comandi netsh. Dato che per effettuare un settaggio completo dovremmo dare più comandi netsh, per velocizzare l'operazione utilizzeremo un file batch ( estensione .bat ).
Creiamo quindi un file chiamandolo ad esempio dhcp-wifi.bat e all'interno scriviamo le seguenti stringhe:

IMPORTANTE: A differenza dello script da me scritto, netsh vuole il nome della connessione, e non quello della scheda.

Per configurare la scheda in modalità statica creiamo un file static-wifi.bat ( ad esempio ) e scriviamo:

Quello sopra è un esempio, inserite i vostri valori di ip, mask gateway. Il secondo comando associa all'indirizzo 193.70.152.25 il DNS primario ( Libero DNS, in questo caso ), mentre il terzo comando inserisce un indirizzo DNS secondario ( OpenDNS ).
Anche qui, doppio click ed il gioco è fatto. ;)

Spero di esservi stato utile, e di avervi fatto risparmiare tempo.

P.S.
La voglia di trovare una soluzione a questo "problemuccio" mi è nata dopo un'incazzatura. Ogni volta che sposto il portatile mi toccava sta lì a modificare tutti i parametri. Una cosa insopportabile.

  • Giuliano

    Buongiorno
    Le scrivo per chiedere un consiglio.
    Dovrei reimpostare i parametri di una rete nel seguente modo:
    gli indirizzi Ip 10.4.24:* devono diventare 10.4.8.*, gli inidrizzi 10.4.25.* invece diventeranno 10.4.9.* e il gateway da 10.4.25.* deve diventare 10.4.9.*
    é possibile fare uno script che in automatico legga l'indirizzo e lo modifichi senza che debba passare su ogni pc?

  • http://www.badalis.it Andrea Giacomin

    Si certo che è possibile. In più tramite psexec è possibile far eseguire lo script in remoto su un determinato PC.

  • Giuliano

    Ottimo consiglio. Ma psexec è utilizzabile per copiare uno script su molti computer contemporaneamente? Ovvero dalle mie ricerche non trovo la possibilità di eseguire psexec per un intervallo di pc (tipo un intervallo di ip), forse non ho cercato bene?

  • http://www.badalis.it Andrea Giacomin

    @Giuliano
    Quello che mi hai fatto notare è corretto. psexec esegue uno script su un unico PC in remoto ( dandogli in paso l'IP o direttamente il nome del PC ). Prova così: crea un file list.txt e all'interno inserisci i nomi dei PC o gli ip delle macchine e poi lanci psexec, solo che al posto di inserire il nome del PC scrivi @list.txt. Teoricamente lui dovrebbe eseguire il comando su ogni pc presente nel file txt.
    Qui trovi qualche info in più!

    Un'altra soluzione è realizzare un altro script o anche un batch che reitera la stringa e lancia lo script remoto cambiando ogni volta l'ip.
    Ovviamente se hai 3 computer è più il tempo che impiegheresti per scrivere lo script ma se devi gestirne un centinaio le cose cambiano, in più ti metti in saccoccia uno script che può tornare sempre utile. ;)

    Appena mi ritaglio qualche minuto di tempo voglio proprio approfondire questo argomento.

    Ciao ;)

  • http://nessuno Francesco

    Ciao , vorrei dirti che in win7 l'ultimo comando che hai inserito non funziona , cmq ho trovato la soluzione , questa :
    netsh dnsclient add dnsserver "Connessione rete wireless" 212.146.172.62 2

    Ciao , spero di essere utile ad altri , saluti .

  • http://nessuno Francesco

    Ciao ancora , ti volevo dire che il comndo di prima lancia un errore ma cmq setta il dns2 correttamente , mentre ho trovato un'altro problema nell'ultimo comando shell per ressetare tutto la stringa corretta sotto win7 è :
    netsh interface ipv4 set wins name="Connessione rete wireless" source=dhcp
    a me non ha nessun errore e funziona tutto ... .

    ciao ciao

  • Giuliano

    Per cancellare i vecchi wins e dns (10.*.*.1) e inserire in nuovi (10.*.*.2) e poi svuotare la cache del dns locale dei client ecco la soluzione.
    Dopo aver scaricato Pstools dal sito microsoft e averlo scompattato in c:\windows\system32, si crea un .bat con i seguenti comandi.
    La lista.txt deve contenere tutti gli indirizzi ip dei client della rete su cui si vuole apportare la modifica e deve essere nella stessa cartella dove è presente il .bat.

    psexec @lista.txt -u Administrator -p ***** netsh interface ip delete wins "Connessione alla rete locale (LAN)" 10.*.*.1 >c:\temp\wins_lan.log
    psexec @lista.txt -u Administrator -p ***** netsh interface ip delete dns "Connessione alla rete locale (LAN)" 10.*.*.1 >c:\temp\dns_lan.log

    psexec @lista.txt -u Administrator -p ******* netsh interface ip add wins "Connessione alla rete locale (LAN)" 10.*.*.2 >>c:\temp\wins_lan.log
    psexec @lista.txt -u Administrator -p ***** netsh interface ip add dns "Connessione alla rete locale (LAN)" 10.*.*.2 >>c:\temp\dns_lan.log

    psexec @lista.txt -u Administrator -p ****** ipconfig /flushdns
    psexec @lista.txt -u Administrator -p ****** ipconfig /registerdns

    psexec @lista.txt -u Administrator -p ***** ipconfig /all >>c:\temp\ipconfig.txt

  • http://www.badalis.it Andrea Giacomin

    Grazie Giuliano ;)

  • Michele

    Gentilissimo Andrea,
    ho provato entrambe i modi ma ad ognuno c'è qualcosa che non funziona. In particolare:
    1 nello script vbs benché inserisca il nome della scheda di rete copiato da gestione dispositivi, mi risponde:"Icouldn't set the network card=(" Quindi non riconosce la scheda di rete.
    2 nel secondo invece non mi inserisce il DNS alternativo. Anche qua mi dice: Impossibile trovare il comando seguente: add dns "Connessione rete wireless" addr=208.67.222.222 index=2 .

    Premetto che per me sarebbe assai comodo lo script di vbs, ma non so come fare a fargli riconoscere la scheda di rete Realtek PCIe GBE Family Controller.
    Cordiali saluti.
    Michele