El otro día (hace como 1 mes pero bueno =P ) me pidieron en el trabajo que sacara las IPs de un grupo de computadoras de las cuales habia hecho un inventario, tenia las MAC address de todas nombres y otra info pero no tenia sus IPs, pero tenemos muchas que son estaticas y otras dinámicas en las vlans del jale, la verdad es que me dio flojera ir a revisar a mano las 40 computadoras para obtener sus ips, asi que decidi practicar un poco de batch scripting y me avente un script pequeñito que pingea los hosts desde un input hosts file separado por new lines, luego pingea las compus y el output lo graba a un txt que tu escogas o a uno default si no se especifica, le intente agregar algunas funciones de ayuda para que estuviera mas user friendly pero bueno sin mas rodeos les dejo mi codigo ojala le sirva a alguien y si no me diverti un rato =P
@echo off GOTO start ====================== Description ====================== El programa lee la lista de hosts de un archivo y graba los pings en un archivo de nombre hostIPs.txt al correr el programa es necesario pasar (como parametro) el nombre del archivo que contiene los nombre de las computadoras que se desean pingear. ========================= Usage ========================= Usage: pingHosts input.txt optionalOutput.txt input.txt = Nombre de archivo de entrada con nombres de los hosts que se desean pingear. optionalOutput.txt = Nombre del archivo de salida donde se grabaran las IPs de los hosts, si no se especifica un nombre el programa genera uno por default con las IPs de los equipos pingeados el nombre de este archivo es hostIPs.txt ========================= ------ ========================= Setlocal EnableDelayedExpansion ========================= ------ ========================= Reminder about command above!! If a batch script does not use SETLOCAL and ENDLOCAL then all variables will be Global - visible and modifiable by other scripts. Setting Delayed Expansion will cause each variable to be expanded at execution time rather than at parse time. ::================== Personal Reminder ================== :: los paramentros .==. significan empty param ::======================================================= ********************************************************* *==================== Program Logic ====================* ********************************************************* :start ::Variables declarations ::====================== ::input file set arg1=%1 ::output file set arg2=%2 ::default output file name set temp="hostIPs.txt" ::Temporal handler var set temp2=temp.txt ::====================== Parameters handler ====================== IF %1.==. (GOTO NoParam)ELSE IF %2.==. (GOTO doPingsDefault)ELSE (GOTO doPingsOutput) ::------------------------------------------ :doPingsDefault IF EXIST %arg1% (GOTO pingFile)ELSE (GOTO fileNotFound) GOTO End ::------------------------------------------ ::------------------------------------------ :doPingsOutput IF EXIST %arg1% (GOTO pingWithParams)ELSE (GOTO fileNotFound) GOTO End ::------------------------------------------ ::------------------------------------------ :pingWithParams call:fileExists call:workingMsg FOR /F "tokens=1" %%A IN (%arg1%) DO ( ping %%A >> %arg2% echo. >> %arg2% echo ************************************* >> %arg2%) echo. >> %arg2% GOTO End ::------------------------------------------ ::------------------------------------------ :pingFile set arg2==%temp% ::Falling back to default output name hostIPs.txt call::workingMsg FOR /F "tokens=1" %%A IN (%arg1%) DO ( ping %%A >> %arg2% echo. >> %arg2% echo ************************************* >> %arg2%) echo. >> %arg2% echo file hostIPs.txt has been generated with hostnames IP addresses GOTO End ::------------------------------------------- ::------------------------------------------- :NoParam echo Not parameters were given! at least input hosts file is needed GOTO EndBad ::------------------------------------------- ::------------------------------------------- :workingMsg echo Working...please wait while I ping hosts GOTO:EOF ::------------------------------------------- ::------------------------------------------- :fileExists IF NOT EXIST %arg1% (GOTO fileNotFound) GOTO:EOF ::------------------------------------------- ::------------------------------------------- :fileNotFound echo The especified source file %arg1% was not found!!! GOTO:EOF ::------------------------------------------- ::------------------------------------------- :End exit /b ::------------------------------------------- ::------------------------------------------- :EndBad @echo: echo Usage $:pingHosts input.txt optionalOutput.txt @echo: echo If not output file name is given, the program assigns the name echo hostIPs.txt to the output file, the input file must contain the echo host names desired to be pinged, and separeted by new lines. echo. exit /b ::-------------------------------------------
Update:La semana pasada le hice unos cambios esteticos y le agrege unos comments la version que habia subido no era la mas nueva =P disculpen el pochismo del programa =) espero les sirva
D:
ResponderEliminarlo malo es que a mi no pusieron a sacar las IPs, eso se lo dejaron al otro practicante (que por cierto está estudiando IIS), a mi me pusieron a checar si les sirve el tray del CD y si tienen los puertos USBs bloqueados, asi que yo si tengo que ir a checarlas todas físicamente :(