Frage

Zunächst einmal habe ich die Nutzung dieser Website als Referenz durch den gesamten Scripting Prozess, und es ist wunderbar. Ich schätze, wie nützlich und kenntnisreich ist jeder hier. Vor diesem Hintergrund habe ich eine Frage bezüglich Matching (Mustervergleich) in Lua. Ich bin ein Skript zu schreiben, die Eingabe erfolgt im Wesentlichen aus einer Datei und importiert sie in einer Tabelle. Ich bin für bestimmte MAC-Adressen in der Datei als Host-Überprüfung mir Abfrage bin.

  if macFile then
     local file = io.open(macFile)

     if file then
    for line in file:lines() do
      local f = line
      i, j = string.find ( f, "%x+" )
      m = string.sub(f, i, j)
      table.insert( macTable, m )
    end
    file:close()
     end

Diese analysiert die Datei in ein Format, werde ich später Abfrage verwenden. Sobald die Tabelle erstellt wird, laufe ich durch Iterieren den Tisch und passende das Muster gegen den aktuellen Iteration ein Pattern-Matching-Sequenz, um zu versuchen und die MAC aus der Tabelle übereinstimmen:

local output = {}
t = "00:00:00:00:00:00"
s = string.gsub( t, ":", "")
for key,value in next,macTable,nil do
        a, p = string.find ( s, value )
        matchFound = string.sub(s, a, p)
        table.insert( output, matchFound )
end

Diese Rückkehr keine Ausgabe obwohl, wenn ich es für Zeile in einer Lua Eingabeaufforderung eingeben, es scheint zu funktionieren. Die Variablen werden übergeben richtig glaube ich. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Wenn Ihr MacFile verwendet eine Struktur wie folgt aus:

012345678900
008967452301
000000000000
ffffffffffff

Das folgende Skript sollte funktionieren:

macFile = "./macFile.txt"
macTable = {}

if macFile then
    local hFile = io.open(macFile, "r")
    if hFile then
        for line in hFile:lines() do
            local _,_, sMac = line:find("^(%x+)")
            if sMac then
                print("Mac address matched: "..sMac)
                table.insert(macTable, sMac)
            end
        end
        hFile:close()
    end
end

local output = {}
t = "00:00:00:00:00:00"
s = string.gsub( t, ":", "")

for k,v in ipairs(macTable) do
    if s == v then
        print("Matched macTable address: "..v)
        table.insert(output, v)
    end
end

Andere Tipps

Ich bin gerade von der Arbeit zu verlassen und kann nicht einen tieferen Blick auf Ihr Problem jetzt haben, aber die nächsten beiden Zeilen scheinen ziemlich seltsam.

t = "00:00:00:00:00:00"
s = string.gsub( t, ":", "")

Grundsätzlich Sie entfernen alle ':' Zeichen in der Zeichenfolge t. Anschließend beenden Sie mit s Wesen "000000000000" auf. Dies ist wahrscheinlich nicht das, was Sie wollen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top