우분투 서버에서 패킷 캡쳐와 몽고디비 사용하기

서버에 우분투를 설치하고 나머지 모듈은 deb 또는 소스로 받아서 설치했다.
왜 그러냐고....
우리 서버는 외부와 단절되어 있다. ㅠㅠ

안정성을 위해서 Ubuntu 16.04.5 LTS 설치하였다.
아무래도 최신 판은 휼륭한 사람들이 테스트하기 때문이다.

패킷캡쳐를 하기 위해서는 다음과 같은 라이브러리가 필요하다.
libpcap, libpcap-dev 이 두개를 deb 파일을 받아서 설치하면 된다.
$ sudo apt-get install ./libpcap.deb <- 이런식으로 설치한다
그러면 /usr/include/pcap.h 파일과 pcap 폴더가 생긴다.

이제 스위프트를 사용하려면 clang, libicu-dev 가 필요하다.
위와 같은 방법으로 설치한다.
스위프트 파일을 받아서 홈페이지에 나온 안내대로 압축을 풀고 링크를 건다.

이제 몽고디비를 설치한다.
이것도 소스를 받아서 설치한다.

이제 몽고키튼이라고 스위프트용 프레임을 설치한다.
$ mkdir OpenKitten
$ cd OpenKitten
$ mkdir MongoKitten
$ cd MongoKitten
$ git clone https://github.com/OpenKitten/MongoKitten.git
$ git tag
$ cd ..
이제 pcap 라이브러리 설정을 한다
$ mkdir pcap
$ cd pcap
$ swift package init --type system-module
$ vim module.modulemap
module pcap [system] {
  header "/usr/include/pcap.h"
  link "pcap"
  export *
}

$ vim Package.swift
import PackageDescription
let package = Package(
  name: "pcap",
  pkgConfig: "pcap"
)

$ git init
$ git add .
$ git commit -m "Initial Import"
$ git tag 1.0.0
$ cd ..
$ cd .. // OpenKitten 상위 폴더로 이동

이제 스위프트용 프로젝트 파일을 생성한다.
$ mkdir mongoSwift
$ cd mongoSwift
$ swift package init --type=executable

Package.swift 파일 수정
import PackageDescription
let package = Package(
    name: "mongoSwift",
    dependencies: [
        .package(url: "../OpenKitten/MongoKitten", from: "4.1.3"),
        .package(url: "../pcap", from: "1.0.0"),
    ],
    targets: [
        .target(
            name: "mongoSwift",
            dependencies: ["MongoKitten"]), 
    ]
)

설정이 마무리 되었으니 패키지를 업데이트 한다.
$ swift package update

이제 프로그램 파일을 생성한다
$ swift package generate-xcodeproj

xcode 에서 파일을 열어서 수정하면 된다.

import MongoKitten

let server = try Server("mongodb://localhost:27017")
let database = server["packet_db"]

if server.isConnected {
    print("Connected successfully to server")
}

let collection = database["tcp_collection"]

for document in try collection.find() {
    // do something with document
    print(document)
}

실행해보면 컴파일이 되는지 확인해보자
프로그램을 실행하고 몽고디비에 자료가 쌓이면 잘 되는 것이다.

댓글

이 블로그의 인기 게시물

한글 2010 에서 Ctrl + F10 누르면 특수문자 안뜰 때

아이폰에서 RFID 사용하는 방법

VCC 와 GND 는 무엇일까?