Leer Un Texto Anterior A Una Palabra


Subject: 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

Profile PM  
Subject: 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.

Last edited by shordi on Wednesday, 21 June 2017, 07:49; edited 1 time in total
Profile PM  
Subject: 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

Profile PM  
Subject: 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

Last edited by vuott on Wednesday, 21 June 2017, 19:42; edited 3 times in total
Profile PM  

Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.104s (PHP: -31% SQL: 131%)
SQL queries: 25 - Debug Off - GZIP Enabled