Ping all ip on network

Ping all ip on network, without install any software, batch ping ip range network.

Uno dei problemi che spesso capita è ottenere il numero degli ip attivi in una rete, al fine di individuare una macchina, una stampante, una ipcam un nas etc.. Questo direte è banale, basta un software portable come SoftPerfect Network Scanner, che lo si lancia e ci fà tutto lui, in pochi secondi, ma per chi lavora e si trova su macchine non di sua proprietà e con restrizioni di ogni tipo, e con il problema di volersi tutelare dall’accusa di aver installato o eseguito software non autorizzato il problema non è tanto semplice se non si dispone di aclcune nozioni di dos oltre che di reti, ecco che allora ho deciso di condividere un batch che fà proprio questo e di spiegarvi anche il suo funzionamento per poterlo adattare alle vostre esigenze. Farò prima degli esempi per i più inesperti poi passerò al batch.

Come faccio a sapere se un ip è attivo? E come trovo le sue opzioni?

Semplice devi usare il comando ping, e scrivere ping/? per sapere le sue opzioni.

ping 192.168.1.1

In caso sia inattivo vi dirà host non raggiungibile altrimenti tirerà fuori alcuni valori come la durata media per raggiungerlo in millisecondi.

ping/?

Vi restituisce l’output con le opzioni a video

Ma come faccio a pingare da 192.168.1.1 a 192.168.1.254? Serve un ciclo for ossia iterare un comando n volte finchè non si esaurisce la nostra condizione ossia fino a 254, in dos

FOR /L %%parameter IN (start,step,end) DO command

Quindi ora dobbiamo solo assemblare il batch, quindi aprite il notepad copiate il testo sotto e salvatelo come scan.bat.

@Echo off
setlocal enabledelayedexpansion
::Timeout for ping command in milliseconds
Set _t0=2000
::start IP
Set _t1=1
::ending IP
Set _t2=254
Set _t4=192.168.1.
for /L %%I in (%_t1%,1,%_t2%) do set _t3=%%I & (ping -n 1 %_t4%%%I  -w %_t0% >nul
)& call:status!errorlevel!
Echo
Echo Scan finish
pause >nul

for /L %%I in (0,1,4) do set _t%%I=
goto:eof

:status0
Echo %_t4%%_t3% is online
nslookup %_t4%%_t3%
::mac address
arp -a %_t4%%_t3%
goto:eof

:status1
Echo %_t4%%_t3% is offline
goto:eof

Questo batch come funziona?

Partendo dal suo core ossia dal ciclo for, stabiliamo un ip iniziale, un incremento di 1 ossia 1 ip alla volta e poi la fine del range ossia l’ip finale 254, da 1 a 254, quindi da %_t1% a %_t2% step 1.

Il ping? ping -n 1 %_t4%%%I  -w %_t0% significa che il valore %_t4%=192.168.1. ci aggiungo la variabile %%I che si incrementa ad ogni ciclo fino a 254 quindi %_t4%1,%_t4%2,%_t4%3…..N. Il valore %_t0% è semplicemente quello dei millisecondi.

Cosa è call:status!errorlevel!? Significa vai alla riga :status + !errorlevel! ossia il valore di ritorno della variabile di errorlevel che sarà 0 online oppure 1 offline.

A dimenticavo, se avessimo voluto semplicemente vede gli ip della nostra rete sarebbe bastato il comando arp, esempio:

arp -a

  Indirizzo Internet    Indirizzo fisico      Tipo
  192.168.1.1           00-xx-xx-xx-xx-60     dinamico  
  192.168.1.8           78-xx-xx-xx-xx-b1     dinamico  
  192.168.1.9           14-xx-xx-xx-xx-f8     dinamico  
  192.168.1.10          00-xx-xx-xx-xx-cd     dinamico  
  192.168.1.12          00-xx-xx-xx-xx-60     dinamico  
  192.168.1.14          04-xx-xx-xx-xx-02     dinamico  
  192.168.1.255         ff-xx-xx-xx-xx-ff     statico   
  224.0.0.22            01-xx-xx-xx-xx-16     statico   
  224.0.0.252           01-xx-xx-xx-xx-fc     statico   
  239.255.255.250       01-xx-xx-xx-xx-fa     statico

Credo che basti, ulteriori informazioni sui batch potete trovarle nei siti qui sotto.

http://ss64.com/nt/

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

PS: Come faccio a salvare l’output in un file di testo? Semplice con >> Percorso\file.txt, riscrivo l’esempio e faccio in modo che mi generi due file txt uno con gli ip online e l’altro con quelli ofline

@Echo off
setlocal enabledelayedexpansion
::Timeout for ping command in milliseconds
Set _t0=2000
::start IP
Set _t1=1
::ending IP
Set _t2=254
Set _t4=192.168.1.
for /L %%I in (%_t1%,1,%_t2%) do set _t3=%%I & (ping -n 1 %_t4%%%I  -w %_t0% >nul
)& call:status!errorlevel!

for /L %%I in (0,1,4) do set _t%%I=
goto:eof

:status0
Echo %_t4%%_t3% >>C:\ipstatus\online.txt
nslookup %_t4%%_t3% 
::mac address
arp -a %_t4%%_t3%
goto:eof

:status1
Echo %_t4%%_t3% >>C:\ipstatus\offline.txt
goto:eof

jepi

I'm Jepi, a curious blogger that enjoys writing technical and non technical articles with the right sense of irony !!!

Lascia un commento