2016-06-08 34 views
0

我有一个TSV文件的网络扫描,其中包含类似于下面的示例arangoimp从CSV图形文件

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 

形式的数据是否有一个简单的方法来导入此使用arangoimp入(预创建)边缘收集网络数据?

回答

1

如果不会转换IP(固定在ArangoDB 3.0中),您可以合并the TSV importer,因此您需要多一点转换逻辑才能获得有效的CSV。在导入过程中,将使用ede attribute conversion option将前两列转换为有效的_from_to属性。

你不应该在其中指定空白的列主题,它应该是标签或一个固定数量的列。我们需要在主题行中指定_from_to字段。

为了使其工作,你会管上面通过sed得到有效CSV和适当的列名这样的:

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 

桑达与这些正则表达式将创建一个中间表示看起来就像是:

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

生成的边缘看起来就像是:

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

谢谢你。有Arangodb 3.0发布日期吗? (我知道它目前处于测试阶段。) – Guido

+0

本周晚些时候我们会谈谈。 RC3刚刚发布。 – dothebart