Usare Ping In Script Batch

Tempo fa avevo presentato un articolo che mostra come utilizzare il comando ping all’interno di un batch script:

http://www.morzello.com/dblog/articolo.asp?articolo=41

Come spiegato, il comando restituisce sempre lo stesso errorlevel, rendendo vano un eventuale tentativo di capire se il ping è andato a buon fine o meno all’interno di uno script.

Oggi presento una variante che consente di ottenere lo stesso risultato senza dover scrivere codice vbscript.

Di seguito trovate un piccolo file .BAT (o .CMD) che potete utilizzare per testare l’esito di un ping:

ping nomeserver | findstr "TTL="
echo %errorlevel%

Mentre il comando ping restituisce sempre lo stesso errorlevel, findstr discrimina l’uscita a seconda che nell’output esista o meno una corrispondenza utile. A questo punto possiamo testare l’uscita del comando findstr invece che di ping.

Alla prossima.

Modificare le impostazioni di rete “al volo” (netsh e file di registro)

Chi come me usa un computer portatile fornito dall’azienda per lavoro, ha spesso la necessità di modificare al volo le impostazioni di rete.
Qualche anno fa, prima di diventare un consulente, lavoravo come amministratore di rete per la stessa società in cui lavoro oggi.
Le richieste di aiuto più frequenti erano legate alla impossibilità di navigare sulla rete. Nella maggior parte dei casi passavo ore al telefono spiegando cosa fare per cambiare indirizzo IP, DNS, Proxy, …
Senza considerare poi che quasi tutti i consulenti “vorrebbero” utilizzare il portatile sdraiati sul divano davanti la tv con la scusa di “lavorare da casa”.
Oggi esistono tanti programmi in grado di modificare in tempo reale le impostazioni di rete ma qualche anno fa trovare una soluzione completa non era facile.
Di seguito vi presento due script in VB Script che ho scritto velocemente nel mio tempo libero e che aiutano l’utente a modificare le impostazioni di rete senza dover installare programmi sul portatile.

Change IP
Il primo script si chiama Change IP ed implementa un piccolo tool che raccoglie le preferenze dell’utente e le salva in un file di input compatibile con netsh (network shell).
netsh è una utilità di windows eseguibile dalla console che consente di modificare tutti i parametri di rete che normalmente vengono gestiti tramite le proprietà della periferica ovvero tramite il pannello di controllo.
Dopo aver salvato il file di input (con estensione .conf), viene creato un link a netsh sul desktop.
Basta richiamare il link (con privilegi di amministratore) per cambiare al volo le impostazioni di rete.
Nonostante fosse possibile fare a meno di netsh impiegando solo codice vbscript, scelsi questa soluzione perchè non avevo molto tempo da dedicare allo sviluppo e volevo dare all’utente la possibilità di spostare le preferenze di rete da un portatile ad un altro senza per forza dover utilizzare il codice vbs.
Per chi deve gestire una rete questo approccio torna comodo perché basta creare il file di input una sola volta per poi distribuirla su tutti i portatili aziendali.

Cosa fa il codice sorgente
Lo script si limita a catalogare le risorse di rete disponibili e raccogliere le preferenze espresse dall’utente inserendole in un file di testo con estensione .conf.
Per enumerare le periferiche di rete viene richiamato il comando netsh:

netsh interface ip show config

E questo è un esempio del risultato:

Configurazione per l’interfaccia “Connessione alla rete locale (LAN)”
DHCP abilitato: Sì
MetricaInterfaccia: 0
Server DNS configurati tramite DHCP: Nessuno
Server WINS configurati tramite DHCP: 10.0.0.20
10.0.0.130
Registratore con suffisso: Solo primario

Configurazione per l’interfaccia “Connessione rete senza fili”
DHCP abilitato: Sì
MetricaInterfaccia: 0
Server DNS configurati tramite DHCP: Nessuno
Server WINS configurati tramite DHCP: Nessuno
Registratore con suffisso: Solo primario

Di seguito riporto per comodità un esempio di file conf creato tempo fa per connettermi ad modem ethernet dotato di bootloader adam2:

#————————————————–
# Change IP 1.1 by vittorio benintende
#
# Questo file è stato generato automaticamente.
# Non modificarlo!!!
#
# Per informazioni scrivere a:
# vittorio.@lucullo.it
#————————————————–

# Configurazione IP interfaccia Connessione alla rete locale (LAN)

pushd interface ip
set address name = “Connessione alla rete locale (LAN)” source = static addr = 10.0.0.1 mask = 255.255.255.0
set dns name = “Connessione alla rete locale (LAN)” source = static
set wins name = “Connessione alla rete locale (LAN)” source = static
popd

# Termine della configurazione IP interfaccia

Change Proxy
Il secondo script si comporta in modo differente. Questa volta viene demandato al programma di salvare le preferenze dell’utente in un file (sempre con estensione .conf) e di modificare le chiavi di registro per rendere effettive le modifiche necessarie.

Le informazioni gestite con questo piccolo tools sono le stesse raggiungibili tramite l’icona Opzioni Internet ovvero Internet Explorer (Strumenti > Opzioni Internet).
All’avvio dello script un apposito menu guida l’utente tra le varie opzioni.
Le impostazioni relative alla connessione con il proxy vengono tenute nel file di registro di windows e sono reperibili tramite il comando regedit al seguente percorso:

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings

VB script ed antivirus
Mi è capitato di notare che alcuni antivirus (vedi ad esempio Norton AV) inibiscono l’esecuzione degli script.
Qualora ci fossero problemi in tal senso il mio consiglio è quello di impostare l’av in modo da consentirne l’esecuzione piuttosto che disattivare il programma di scansione residente in memoria.

Sorgenti

Network Manager 1.1

Per saperne di più
Il comando netsh
Impostare il proxy in MS Windows

Cambiare risoluzione dello schermo al momento del login

Tanto tempo fa, con il sudore della fronte, comprai uno splendido monitor 22 pollici crt. Tutt’ora lo uso ad una risoluzione di 1600×1400 anche se supporta risoluzioni decisamente maggiori.

La mia ragazza però adora vedere sullo schermo caratteri “cicciosi” e grandi.
Per questo motivo mi ritrovo sempre a dover cambiare risoluzione ogni volta che mi autentico sulla macchina.

Esiste un programmino chiamato qres.exe che consente la modifica della risoluzione e di altri parametri interessanti da riga di comando.

L’esempio riportato di seguito mostra come sia possibile automatizzare il cambio di risoluzione ad ogni login utente tramite l’impiego di un file batch ed un paio di comandi DOS. Se l’utente si chiama myUser allora la risoluzione sarà di 1024×768 (in presenza di un monitor 4:3) altrimenti sarà di 1600×1400.

::
:: script di avvio per ogni utente
:: di dominio

@ECHO OFF

IF %USERNAME%==myUser (
  %SystemRoot%\qres.exe /x:1024
  GOTO GOEXIT
)
  %SystemRoot%\qres.exe /x:1600
:GOEXIT

Ho copiato l’eseguibile nella %SystemRoot% che per i possessori di Windows XP corrisponde in genere a C:\WINDOWS
Il file .bat l’ho invece inserito tra gli script di avvio nelle policy locali della workstation in modo tale che venga eseguito ogni volta che un utente si autentica.

Chi non avesse voglia di utilizzare le policy oppure il file di registro, può copiare/trascinare il file batch nell’apposita cartella del menù di Windows denominata Esecuzione Automatica.

Per saperne di più
Homepage di QRes