Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Como Incrementar Un Ip De Dentro De Un Textbox?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Incrementar Un Ip De Dentro De Un Textbox? 
 
hola buenas, a ver si me podeis hechar una mano en un programa que intento hacer....
tengo 2 textbox en uno la ip de inicio y en otra la ip final
quiero poder hacer un exec con la ip del principio y que se incremente hasta la ip final
os muestro lo que llevo hecho
PUBLIC SUB iniciar_Click()
DIM dale AS String
DIM ip AS Float
DIM ipf AS Float
'ip = inicio.Text
ipf = fin.Text
FOR ip = inicio.Text TO ipf STEP 1
  dale = "nmap -sP " & ip
  PRINT dale
 NEXT  
  
END
 

gracias de antemano
 



 
FresyMetal - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Incrementar Un Ip De Dentro De Un Textbox? 
 
Hola

Incrementar una ip no es como incrementar un número. Para empezar faltan datos porque hace falta la dirección de red y la dirección de broadcast o bien la dirección de red y la máscara de subred. Sin esos datos o se puede incrementar una ip porque no sabes si estas en la red o te has salido.

Sobre el problema en sí mismo de incrementar en uno una ip no veo el problema. Una ip tiene cuatro partes ip1, ip2, ip3, ip4. Tu miras si ip4 es 255. Si no lo es puedes incrementarlo en uno. Si lo es repites el proceso con ip3. Si es menor que 256 puedes incrementarlo y poner ip4 a ceros. Si no puedes repites el proceso con ip2, ..., etc
 



 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Incrementar Un Ip De Dentro De Un Textbox? 
 
y como lo incrementas por que no me sale....
 



 
FresyMetal - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Incrementar Un Ip De Dentro De Un Textbox? 
 
pero hombre, si es muy fácil.

Pongamos una ip que tiene las siguientes posibilidades
XXX.XXX.XXX.XXX
Las X son obligatoriamente números y cada grupo son obligatoriamente tres. osea que un grupo puede ser 011 ó 001 pero no puede ser ni 1 ni 11

Planteado ese problema a resolver puede hacerlo de dos formas. En cualquier caso tienes que preguntar los cuatro grupos que definen una ip. Para ello puedes hacerlo con cuatro textboxes y que en medio haya un label con un punto para que a la vista quede como es debido. La otra opción es que lo preguntes todo en un textbox. En ese caso tienes que controlar en ese textbox que solo se admitan números y el punto y que lo escrito sea sintácticamente correcto.

Bien, el caso es que yo en un caso imaginario tengo un textbox que contiene una ip 192.168.1.5 y deseo incrementarla en uno.

Pues el primer paso es obtener los distintos grupos
private sub Inc_Ip
Dim Grupos as new string[]
Dim ValorGrupo as integer
Grupos=split(textbox.text,".")

Y con eso tienes en grupos[0] el primer grupo. En grupos[1] el segundo grupo. En grupos[2] el tercer grupo. En Grupos[3] el cuarto grupo.

Ahora lo que hay que hacer es ver si el incremento va en el cuarto grupo, tercer grupo, segundo grupo, primer grupo.
ValorGrupo=cint(grupos[3]) 'convertir a entero el valor
if valorGrpo<255  then
   Grupo[3]=NuevoValor(ValorGrupo)
else
   Grupo[3]="000" 'pongo grupo 4 a cero
   ValorGrupo=cint(grupos[2]) 'convertir el grupo 3 a entero
   if ValorGrupo<255 then
      Grupo[2]=NuevoValor(ValorGrupo)
   else
      Grupos[2]="000" 'pongo grupo 3 a ceros
      ValorGrupo=cint(grupo[1]) paso a entero el grupo 2
      if ValorGrupo<255 then
         Grupo[1]=NuevoValor(ValorGrupo)
      else
         Grupo[1]="000"
         ValorGrupo=cint(grupo[0]) 'convierto a entero el grupo 0
         if valorGrupo<255 then
           Grupo[0]=NuevoValor(ValorGrupo)
         else
            message.error("No es posible")
         endif
      endif
  endif
endif
textbox.text=Grupo[0] & "." & Grupo[1] & "." & grupo[2] & "." & Grupo[3]
end

Se puede hacer mucho mas pequeña en un bucle pero prefiero que entiendas el concepto y así se comprende mejor.

'Esta función recibe un valor, lo incrementa y lo convierte a string de tres dígitos
private function NuevoValor(valor as integer) as string
dim s as string
inc valor 'incremento el valor
s=LlenarCeros(Valor) 'lo convierto a string y le añado ceros si hace falta
return s
end


Esta función recibe un valor, lo convierte a string y si tiene menos de tres dígitos le añade ceros por la izquierda para que tenga tres dígitos
private function LlenarCeros(Valor as integer) as string
dim S as string
S=cstr(valor) 'convertirlo a string
if len(S)=1 then
   S="00" & s 'si el valor solo tiene un dígito anteponerle dos dígitos
else
  if len(s)=2 then
     S="0" & s 'si el valor tiene dos dígitos anteponerle un dígito
  endif
endif
return S
end


Pregunta lo que no entiendas
 
 



 
última edición por soplo el Jueves, 07 Abril 2011, 03:53; editado 2 veces 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Incrementar Un Ip De Dentro De Un Textbox? 
 
Pues yo creo que es mucho más fácil hacer esto (para la función LlenarCeros):

Código: [Descargar] [Ocultar]
  1. Public Sub CompleteZero(Number As String) As String
      
  2.  
      
  3.  Return String(3 - String.Len(Number), "0") & Number
      
  4.  
      
  5. End

 



 
última edición por Invitado el Miercoles, 06 Abril 2011, 23:06; editado 1 vez 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Incrementar Un Ip De Dentro De Un Textbox? 
 
Más fácil:

Format$(number, "00#")


De todas formas eso no es lo importante. El problema inicial es averiguar (o calcular) todas las IPs existentes dentro de un rango definido desde una IP inicial y otra final.

Y pueden ser muchas. Por ejemplo desde la 192.168.0.0 a la 192.168.2.255  hay 255 x 3 = 765 ips. Habría que generar la cadena completa de cada IP, almacenarla en un array y después ir leyendo el array para ejecutar la orden shell con cada IP. En el supuesto de trabajar con redes de clase A el array podría contener hasta 126 x 2563 =  2113928964, lo cual podría "tostar" nuestra máquina.

No sé si sería la mejor forma...

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Busqueda Simple Un Textbox Dentro De Un Te... alexprox Aplicaciones/Fragmentos de Código 1 Viernes, 05 Marzo 2010, 04:44 Ver último mensaje
Invitado
No hay nuevos mensajes Ajustar Un Control Textbox Dentro De Un C... abarzuaf Controles/Librerías/Componentes 3 Viernes, 05 Marzo 2010, 19:44 Ver último mensaje
abarzuaf
No hay nuevos mensajes Como Identificar Un Valor Dentro De Un TexBox OneErick General 19 Domingo, 19 May 2013, 13:15 Ver último mensaje
Shell
No hay nuevos mensajes Como Poner Un Form Dentro De Otro v3ctor General 12 Jueves, 12 Septiembre 2019, 21:35 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron