Pensieri sparsi


Bric a Brac
Archivio Posts
Anno 2014

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Abilitare o disabilitare una connessione di rete


Capita a volte di dover abilitare o disabilitare una connessione di rete direttamente da command line (o da un file batch); anche se il tutto potrebbe essere fatto utilizzando uno script (es. VBscript) a volte è più comodo usare un "normale" file batch; il problema è ... come fare

Beh; prima di tutto è necessario scaricare il tool "devcon" (DeviceControl) che permette tra le altre cose di impostare lo stato dei device drivers (avviati, arrestati, disabilitati..); una volta scaricato ed estratto il tool in una qualsiasi cartella sarà opportuno copiare l'eseguibile (...\i386\devcon.exe oppure ...\ia64\devcon.exe) nella cartella di sistema ossia %SystemRoot%\System32; a questo punto avremo a disposizione in qualsiasi momento il comando "devcon" che ci permetterà di "manipolare" quasi a piacimento i vari drivers installati sul sistema.. ma .. torniamo al discorso iniziale; quello che vogliamo fare è disabilitare (o abilitare) una connessione di rete; ecco come fare

Apriamo un prompt comandi ed immettiamo il comando "devcon classes"; dall'output di tale comando è facile capire che nel nostro caso la classe di interesse è "Net" quindi andiamo a vedere un elenco dei devices di tale classe con il comando "devcon listclass Net" e ... come volevasi dimostrare, l'output del comando sarà l'elenco degli adattatori di rete configurati sul sistema; a questo punto cerchiamo l'adattatore che ci interessa aiutandoci anche con il "nome canonico" visibile all'estrema destra dell'elenco; una volta trovato l'adattatore che ci interessa copiamo il nome dell'adattatore stesso fino al primo carattere "&" (escluso); otterremo ad esempio una stringa del tipo "PCI\VEN_8086" questa è l'ID che dovremo usare; per verificare che sia corretta proviamo ad immettere il comando "devcon find PCI\VEN_8086" il cui output mostrerà come unica riga quella relativa all'adattatore di cui sopra; a questo punto abbiamo il dato che ci servirà per disabilitare (o abilitare) l'adattatore in questione; e, per semplificarci le cose scriviamo un semplice file batch (es. adapt.cmd) che conterrà quanto segue

@echo off
set DEVICE=PCI\VEN_8086
if (%1)==(/D) goto DISA
if (%1)==(/E) goto ENAB
echo Uso: %0 {/D o /E}
goto QUIT
:DISA
devcon disable %DEVICE%
goto QUIT
:ENAB
devcon enable %DEVICE%
goto QUIT
:QUIT
set DEVICE=

analizzando quanto sopra è facile capire che richiamando "adapt.cmd /D" verrà disabilitato l'adattatore identificato dalla stringa "PCI\VEN_8086" mentre richiamandolo con "adapt /E" l'adattatore verrà abilitato; il risultato dell'esecuzione del batch di cui sopra sarà lo stesso ottenibile scollegando o ricollegando fisicamente il cavo di rete all'adattatore (ma naturalmente la cosa funzionerà anche per gli adattatori wireless)

Beh .. è tutto; spero solo che possa essere utile a qualcuno così come lo è stato per me

 Dimenticavo; nel caso in cui esistano più adattatori di rete con lo stesso "base ID" (es. "PCI\VEN_8086") non sarà possibile utilizzare la forma abbreviata vista sopra ma sarà necessario utilizzare l'intera stringa "hardware ID" prefissandola con il carattere "@" ad esempio; si supponga di avere i seguenti devices

PCI\VEN_8086&DEV_1076&SUBSYS_016D1028&REV_05\5&803901B&0&380028: Intel(R) PRO/1000 MT Network Connection
PCI\VEN_8086&DEV_1076&SUBSYS_016D1028&REV_05\5&C8E9BA0&0&400228: Intel(R) PRO/1000 MT Network Connection #2

e di voler disabilitare la seconda connessione; dato che entrambe le connessioni hanno la stessa "radice" non sarà possibile utilizzare la forma abbreviata già vista dato che in quel modo disabiliteremmo entrambe le connessioni; in questo caso, per disabilitare la seconda connessione, il device ID andrà specificato in questo modo

@PCI\VEN_8086&DEV_1076&SUBSYS_016D1028&REV_05\5&C8E9BA0&0&400228

quindi il comando per disabilitare la connessione sarà

devcon disable "@PCI\VEN_8086&DEV_1076&SUBSYS_016D1028&REV_05\5&C8E9BA0&0&400228"

e con questo.. spero sia veramente tutto

Categoria: Il Ripostiglio
lunedì, 15 gen 2007 Ore. 15.27




Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003