Script netstat valñidacion de IP en txt

Iniciado por EARM, 23 Diciembre 2015, 17:56 PM

0 Miembros y 1 Visitante están viendo este tema.

EARM

Buen dia comunidad tengo un problema con este script, me gustaria saber si se puede realizar una validacion de una ip con netstat donde si no esta en ese archivo me abra un bat si no me haga nuevamente todo el proceso.

Código (dos) [Seleccionar]
@Echo off

Set IP=192.168.76.55:8093

:begin

netstat -a -n -o > temp.txt

FOR /F "tokens=2" %i in ('"type temp.txt | findstr 192.168.76.55:8020"') do (

IF not EXIST %i (
  ECHO ping -n 20 localhost > nul
 goto begin
 
PAUSE
) ELSE (
  ECHO (Start H:\mi.bat)
)
)

GGZ

#1
Primero de todo para que tenés una variable llamada IP si ni siquiera la usás.
Segundo, te faltó la etiqueta de código, queda horrible así.

Específicamente, ¿qué querés hacer? ¿comprobar si un puerto está abierto?
¿A qué carajo te referís con validación de IP?

Ya habías preguntado algo parecido ...

Puede que haya otras formas de hacerlo.
LET'S DO STUFF!!

Eleкtro

#2
1. Encierra la variable cuando utilices símbolos reservados por el lenguaje como ":" .
Código (dos) [Seleccionar]
Set "IP=192.168.76.55:8093"

2. Utiliza el comando FIND en lugar de FINDSTR, pues no lo necesitas en absoluto ya que conoces el string a buscar, y aparte, el punto "." representa cualquier posible caracter en RegEx, con lo cual estás buscando un string más largo de lo que piensas que no corresponde a una ip.
Código (dos) [Seleccionar]
FOR ... in ('"type temp.txt ^| find "%IP%"') do (...)

3. El símblo "|" o pipe debes escaparlo en la expresión de FOR con el operador de escape ^. En el punto nº2 te mostré como hacerlo.

4. El símbolo de variable de For tienes que duplicarlo al usarlo en un script.
Código (dos) [Seleccionar]
For %%a ...

5. El comando EXISTS es exclusivo para archivos y carpetas. Si quieres comparar un valor debes utilizar el comando FIND, FINDSTR o IF EQU/GEQ/GTR/LEQ/LSS, Batch es un lenguaje muy limitado.

Saludos!








EARM

Buenos dias gracias por leer el post quedaria algo como asi

@Echo off

Set "IP=192.168.76.55:8093"

:begin

netstat -a -n -o > temp.txt

FOR /F "tokens=2" %IP in ('"type temp.txt | find "%IP%""') do (

                IF EQU %IP (
                             ECHO ping -n 10 localhost > nul
                             goto begin
                             
                           ) ELSE (
   ECHO (Start H:\mi.bat)
)