Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: EARM en 23 Diciembre 2015, 17:56 pm



Título: Script netstat valñidacion de IP en txt
Publicado por: EARM en 23 Diciembre 2015, 17:56 pm
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
  1. @Echo off
  2.  
  3. Set IP=192.168.76.55:8093
  4.  
  5. :begin
  6.  
  7. netstat -a -n -o > temp.txt
  8.  
  9. FOR /F "tokens=2" %i in ('"type temp.txt | findstr 192.168.76.55:8020"') do (
  10.  
  11. IF not EXIST %i (
  12.   ECHO ping -n 20 localhost > nul
  13.  goto begin
  14.  
  15. ) ELSE (
  16.   ECHO (Start H:\mi.bat)
  17. )
  18. )


Título: Re: Script netstat valñidacion de IP en txt
Publicado por: GGZ en 24 Diciembre 2015, 05:59 am
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.
 


Título: Re: Script netstat valñidacion de IP en txt
Publicado por: Eleкtro en 29 Diciembre 2015, 16:26 pm
1. Encierra la variable cuando utilices símbolos reservados por el lenguaje como ":" .
Código
  1. 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
  1. 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
  1. 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!


Título: Re: Script netstat valñidacion de IP en txt
Publicado por: EARM en 29 Diciembre 2015, 18:10 pm
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)
)