Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Leer Un Texto Anterior A Una Palabra

Leer Un Texto Anterior A Una Palabra
Artículo
Responder citando    Descargar mensaje  
Mensaje Leer Un Texto Anterior A Una Palabra 
 
Hola, soy nuevo en el foro, y realmente nuevo programando en gambas, quiero hacer un programa que requiere conocer el nombre de las interfaces de red en mi sistema Xubuntu, no sé si me estoy complicando la vida, pero mi idea era la siguiente:

usar el comando ifconfig para obtener la información de la tarjeta de red:

Shell ("ifconfig > /home/configuracion")

Y ahora tengo un archivo que se llama "configuracion" dentro de mi carpeta home

Ahora lo que quiero es abrir ese archivo y leer línea por línea sólo lo que se encuentra antes de la frase: "Link encap:"
y almacenarlo en una variable, creo que aquí necesitaré usar un arreglo (Que tampoco sé muy bien cómo se usan en gambas)

La idea es que siempre lo que está antes de esa frase será una interfaz de red, sé que si logro leer lo que está justo antes de esa frase voy a obtener una cadena con espacios, pero después se pueden eliminar.

Como he dicho anteriormente, no sé si me estoy complicando la vida, quizás hay una forma mejor para obtener estos datos en gambas o usando la consola, estoy atento a cualquier mensaje

Gracias  



 
rootchack - Ver perfil del usuario Enviar mensaje privado  
rootchack [ Miercoles, 21 Junio 2017, 06:27 ]
 


Leer Un Texto Anterior A Una Palabra
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Leer Un Texto Anterior A Una Palabra 
 
Bienvenido.
Lo que buscas es sencillo, sólo debes primero encontrar la posición de la cadena que buscas (función instr) luego extraer todo desde el inicio hasta esa posición (función mid o left) y luego dividirlo en líneas que almacenas a un array (función split)
Desglosando (aunque se puede hacer en muchas menos líneas) sería algo así

dim s as string
dim ar as string[] 'este es el array
dim n as integer
s=file.load("~/configuracion") 'cargas el fichero en una variable
n=instr(s,"Link encap:") 'obtienes la posicion
s=left(s,n) 'extraes todo lo que va antes de esa cadena
ar=split(s,gb.newline) 'almacenas en un array esas líneas


Con eso ya tienes el array con el contenido del fichero hasta Link encap una línea en cada elemento.

Saludos.



 
última edición por shordi el Miercoles, 21 Junio 2017, 07:49; editado 1 vez 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Miercoles, 21 Junio 2017, 07:49 ]
Responder citando    Descargar mensaje  
Mensaje Re: Leer Un Texto Anterior A Una Palabra 
 
En una sola línea sería

ar = Split(Left(file.load("~/configuracion"), InStr(file.load("~/configuracion"), "Link encap:")))


Más o menos...  aunque sería más lento por recurrir dos veces al fichero en lugar de una, claro   



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Miercoles, 21 Junio 2017, 07:55 ]
Responder citando    Descargar mensaje  
Mensaje Re: Leer Un Texto Anterior A Una Palabra 
 
Sin utilizar el comando Shell.


Ya que te interesa conocer solo el nombre de las interfaces de red, tú podrías recobrar sus nombres desde sus file-device en la carpeta "/proc/net/dev_snmp6".

Ejemplo:
Public Sub Main()

  Dim archivos As String[]
  Dim s As String
  
    archivos = Dir("/proc/net/dev_snmp6", Null, gb.Device)
    
    For Each s In archivos
      Print s
    Next

End




Una otra posibilidad podría ser recobrando sus nombres desde el archivo "/proc/net/dev".

Ejemplo:
Public Sub Main()
  
   Dim ss As String[]
  Dim s As String
  Dim b As Byte
  
   s = File.Load("/proc/net/dev")
  
   ss = Split(s, gb.NewLine)

   For b = 2 To ss.Max
     If IsNull(ss[b]) = False Then Print LTrim(Scan(ss[b], "*:*")[0])
   Next

End




 
última edición por vuott el Miercoles, 21 Junio 2017, 19:42; editado 3 veces 
vuott - Ver perfil del usuario Enviar mensaje privado  
vuott [ Miercoles, 21 Junio 2017, 12:16 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron