2016-06-08 11 views
0

ich einen Netzwerk-Scan in einer TSV-Datei, die Daten in einer Form, wie das folgende Beispiel enthältarangoimp von Graphen aus CSV-Datei

source IP  target IP  source port target port 
192.168.84.3 192.189.42.52 5868   1214 
192.168.42.52 192.189.42.19 1214   5968 
192.168.4.3 192.189.42.52 60680   22 
.... 
192.189.42.52 192.168.4.3  22    61969 

Gibt es eine einfache Möglichkeit, dies mit arangoimp in die importiert werden (prä- erstellt) Kantensammlung Netzwerkdaten?

Antwort

1

Sie könnten kombinieren the TSV importer, wenn es nicht fehlschlagen würde die Umwandlung der IPs (behoben in ArangoDB 3.0), so dass Sie ein bisschen mehr Konvertierungslogik benötigen, um gültige CSV zu erhalten. Man wird die ede attribute conversion option verwenden, um die ersten beiden Spalten während des Imports in gültige Attribute _from und _to zu konvertieren.

Sie sollten keine Spaltensubjekte mit Leerzeichen in ihnen angeben, und es sollte wirklich Registerkarten oder eine konstante Anzahl von Spalten sein. In der Betreffzeile müssen wir ein _from und ein _to Feld angeben.

Um es funktioniert, würden Sie Rohr der oben durch sed wie diese gültige CSV und richtige Spaltennamen zu erhalten:

cat /tmp/test.tsv | \ 
    sed -e "s;source IP;_from;g;" \ 
     -e "s;target IP;_to;" \ 
     -e "s; port;Port;g" \ 
     -e 's; *;",";g' \ 
     -e 's;^;";' \ 
     -e 's;$;";' | \ 
    arangoimp --file - \ 
     --type csv \ 
     --from-collection-prefix sourceHosts \ 
     --to-collection-prefix targetHosts \ 
     --collection "ipEdges" \ 
     --create-collection true \ 
     --create-collection-type edge 

Sed mit dieser regulären Ausdrücken wird eine Zwischendarstellung wie die Suche erstellen:

"_from","_to","sourcePort","targetPort" 
"192.168.84.3","192.189.42.52","5868","1214" 

Die erzeugten Kanten so aussehen:

{ 
    "_key" : "21056", 
    "_id" : "ipEdges/21056", 
    "_from" : "sourceHosts/192.168.84.3", 
    "_to" : "targetHosts/192.189.42.52", 
    "_rev" : "21056", 
    "sourcePort" : "5868", 
    "targetPort" : "1214" 
} 
+0

Danke dafür. Gibt es ein Arangodb 3.0-Veröffentlichungsdatum? (Ich weiß, es ist derzeit in der Beta.) – Guido

+0

Wir nähern uns später in dieser Woche. RC3 wird gerade veröffentlicht. – dothebart