kiwani
Goto Top

Umwandeln von Sternzeichen bei IP Adressen

Hallo zusammen,
ich habe zur Bearbeitung von Logfils solche IP Adressen:

134.100.*.* von der die IP: 134.100.172.24 ein teil ist.

Meine Frage ist:

wie kann ich mit MS Access diese .* Zeichen ein Wert von 0 und 256 zuweisen, damit ich die zugehörige korrekte IP Adresse zuordnen kann??

Für euere Helfe wäre sehr dankbar.

kiwani

Content-Key: 166946

Url: https://administrator.de/contentid/166946

Printed on: April 25, 2024 at 04:04 o'clock

Member: bastla
bastla May 26, 2011 at 08:46:07 (UTC)
Goto Top
Hallo kiwani!

Kannst Du das bitte so beschreiben, dass einigermaßen zu erkennen ist, wo (Textdatei, Tabelle) Deine Ausgangsdaten stehen, wie der gesuchte Wert gefunden werden und was mit dem Ergebnis weiter geschehen soll?

Grüße
bastla

P.S.: Die Überschrift "Umwandeln von Sternzeichen bei IP Adressen" hat einen eher esoterischen Touch ... face-wink
Member: Pago159
Pago159 May 26, 2011 at 08:56:35 (UTC)
Goto Top
Hallo Kiwani,

wenn die IP-Adressen in dem Logfile nur Teilweise erscheinen,
dann wird das eher Problematisch, ausser du könntest in dem Programm,
welches die Logfiles erstellt einstellen, dass es die IP-Adresse komplett Loggen soll
und nicht aus Sicherheitsgründen die hälfte mit "*" ersetzen soll.

Lg GRapper
Mitglied: 60730
60730 May 26, 2011 at 08:56:50 (UTC)
Goto Top
Moin,

und wenn du bastlas Info verarbeitest - denke dran
ein Wert von 0 und 256

ist etwas zuviel des Guten
Member: Kiwani
Kiwani May 26, 2011 at 09:02:55 (UTC)
Goto Top
Danke für das schnelle Antwort,

die 1 Tabelle hat:

user_name title token

WIB6093 FH , Bibliothek 134.100.*.*


Die 2 Tabelle hat:

Date IP
02/Feb/2011:18:22:09 134.100.172.24

Also Unter der token 134.100.*.* sind mehrere Ips, die in 2Tabelle stehen, diese ips muss ich mit der eine aus 1Tabelle verknüpfen.
ich kann beider Tabellen nur anhand diese IPs Verknüpfen, dieses ist der einzige Primär Schlüssel.

Ich hoffe, ich konnte es deutlich klären.

Dank
Kiwani
Member: SlainteMhath
SlainteMhath May 26, 2011 at 09:11:08 (UTC)
Goto Top
Moin,

in dem Fall ist es einfacher der 2ten Tabelle noch ein Feld hinzuzufügen und aus der 134.100.172.24 ein 134.100.*.* zu mnachen, und damit daknnst Du dann die beiden Tabellen verknüpfen

lg,
Slainte
Member: Kiwani
Kiwani May 26, 2011 at 09:14:48 (UTC)
Goto Top
ja da hast du recht..

ich habe etwa mit einer Update Abfrage ,die .* einen wert von 0 bis 256 zuweist.

hat es aber leider net so geklappt.

Geht das nicht mit einer Funktion in Access??
Member: Kiwani
Kiwani May 26, 2011 at 09:21:06 (UTC)
Goto Top
Hallo,
da gehören aber zur 134.100.*.* noch 100er oder mehr..134.100.172.25, 134.100.172.26, 134.100.173.24,...

lg
Kiwani
Member: SlainteMhath
SlainteMhath May 26, 2011 at 09:25:50 (UTC)
Goto Top
UPDATE tabelle2 SET IP_Wildcard='134.100.*.*' WHERE IP LIKE '134.100%'  

face-smile
Member: Kiwani
Kiwani May 26, 2011 at 09:35:28 (UTC)
Goto Top
Versuche grade mit so ein Code:

Function FormatStern(strIPOriginal As String) As String
Dim strTemp() As String
Dim intX As Integer

strTemp() = Split(strIPOriginal, "*")

For intX = 0 To UBound(strTemp)
FormatStern = FormatStern & "*" & _
Format(strTemp(intX), "000") "" Mein Problem da die Werte von 0 und 256 zu zuweisen""
Next intX

FormatIPAddress = Mid(FormatIPAddress, 2)

End Function

Viel. hast du dazu eine Idee??
Danke
Member: SlainteMhath
SlainteMhath May 26, 2011 at 09:48:23 (UTC)
Goto Top
Also wenns schon Code sein muss, dann so:

Function FormatStern(strIPOriginal As String) As String
  strTemp() = Split(strIPOriginal, ".")  
  FormatStern=strTemp(0)  & "." & strTemp(1) & ".*.*"  
end function

Dann ein Abfrage über Tabelle2:
SELECT *, IpStern as FormatStern(IP) FROM Tabelle2

Und mit einer 2ten Abfrage Tabelle1 mit der Abfrage Verknüpfen
SELECT *.Tabelle1, *.Abfrage1 LEFT JOIN IP.Tabelle1 = IPStern.Abfrage1

ist dann allerdings nicht so perfomant wie meine Lösung oben.

/EDIT: Zeile 3 Korrigiert, wg. Null-Based-Array
Member: Kiwani
Kiwani May 26, 2011 at 09:59:16 (UTC)
Goto Top
Danke für die Antwort,

Es kommt eine Fehlermeldung:
"Sub oder Function nicht definiert"
Member: bastla
bastla May 26, 2011 at 10:00:43 (UTC)
Goto Top
... wobei zu berücksichtigen wäre, dass das Array "strTemp" nullbasiert ist ...

Grüße
bastla
Member: SlainteMhath
SlainteMhath May 26, 2011 at 10:04:09 (UTC)
Goto Top
Zitat von @bastla:
... wobei zu berücksichtigen wäre, dass das Array "strTemp" nullbasiert ist ...
Irgendwann kann ich mir das sicher auch mal merken face-smile Danke für den Hinweis.
Member: SlainteMhath
SlainteMhath May 26, 2011 at 10:11:54 (UTC)
Goto Top
"Sub oder Function nicht definiert"
Die Funktion muss in einem Modul stehen, nicht in einem Form oder Report, und muss mit "public function..." definiert sein.
Member: Kiwani
Kiwani May 26, 2011 at 11:29:36 (UTC)
Goto Top
Hallo Ihr Lieben,
ich hatte die Funktion in einem Modul stehen.
habe dazu die Abfrage:A: FormatStern([ns1:token]) laufen lassen und kommt trotzdem die Falermeldung: Undefinierte Funktion 'FormatStern'
in Ausdruck...?

lg
KIwani
Member: Kiwani
Kiwani May 27, 2011 at 08:22:36 (UTC)
Goto Top
Hallo zusammen,
zu meinem Problem komme ich leider nicht weiter.

ich werde jetzt zu jeder einzelne IP subnet wie:131.234.*.*
eine Abfrage erstellen.
Ich habe es versucht und es sieht so aus:


'IP=131.234.*.*

Public Function ip2num(ip)
Dim i, a, n
a = Split(ip, ".")
n = CDbl(0)
For i = 0 To UBound(a)
n = n * 256 + a(i)
Next i
ip2num = n

End Function
SELECT *
FROM tbl_Sowiport_ausgewertet where ip2num(IP) BETWEEN ip2num("131.234.0.0") And (ip2num("131.234.0.0")+2^(32-17)-1)

Wenn ich die abfrage laufen lasse kommt immer die Fehlermeldung:
Laufzeitfeehler '13'
Typen unverträglich..

Bitte um Helfe.
Danke Kiwani
Member: SlainteMhath
SlainteMhath May 27, 2011 at 08:35:40 (UTC)
Goto Top
Gewöhn dir doch mal an, deine Variablen und Funktion mit Typen zu versehen, momentan ist alles ein "Variant" und das wird irgendwan mal komisch interprtiert von VBA

Public Function ip2num(ip as string) as long
 Dim i as Integer
 [...usw...]

Dann: Was gefällt Dir an meiner Lösung mit der Funktion und der zwischen Abfrage nicht?

und:
Warum machst du nicht gleich
SELECT * FROM tbl_Sowiport_ausgewertet where ip2num(IP) BETWEEN ip2num("131.234.0.0") And (ip2num("131.234.255.255")  
?
Member: Kiwani
Kiwani May 27, 2011 at 09:16:00 (UTC)
Goto Top
Hallo,

Danke für deine Mail.

Leider hat es mit deiner Lösung nicht geklappt??

Ich weiss es nicht woran das Lag?

Zur Fehlermeldung:
Undefinierte Funktion 'FormatStern'
in Ausdruck...?
Member: SlainteMhath
SlainteMhath May 27, 2011 at 09:27:18 (UTC)
Goto Top
Die Funktion muss in einem Modul stehen, nicht in einem Form oder Report,
OK, das hast du wohl gemacht.

und muss mit "public function..." definiert sein.
Und das?
Member: Kiwani
Kiwani May 27, 2011 at 09:49:52 (UTC)
Goto Top
jetzt spint meine Abfrage:

also Tabelle wo die IPs drin sind heisset: tbl_Zuordnung
in der Tabelle ist die Spaltenname, wo die IPs drin: IP

die Funktion:
Public Function FormatStern(strIPOriginal As String) As String

strTemp() = Split(strIPOriginal, ".")


FormatStern = strTemp(0) & "." & strTemp(1) & ".*.*"


End Function

Die Abfrage:
SELECT *, IP as FormatStern(IP) FROM tbl_Zuordnung

Fehler:Die Select Anweisung schließt ein reserviertes Wort oder Argument ein.
Member: SlainteMhath
SlainteMhath May 27, 2011 at 09:57:39 (UTC)
Goto Top
... IP_STERN as FormatStern(IP) ...