반응형

 

CloudGoat를 사용해보고자 아래 명령어를 입력했을때 에러가 나는 분들은 해결할 수 있습니다.

# 입력한 명령어
./cloudgoat.py create <시나리오>

 

 

  에러 증상

Ubuntu에 CloudGoat를 git에서 다운받아 실행하니 아래와 같은 에러가 출력되었습니다.

Terraform 발생 에러

 

 

 

  원인 및 해결책

에러 발생 원인은 CloudGoat에 대한 AWS Profile이 없기 때문입니다.

에러가 발생하신 분들은 아래 API Access Key를 출력하는 명령어를 실행해보면 아래 사진과 같이 [default] 항목만 출력될 겁니다.

# API Access Key 출력
cat ~/.aws/credentials

 

AWS credential 출력

 

 

하지만 Profile을 추가하면 아래 노란색 네모박스와 같이 cloudgoat에 대한 Profile을 추가할 수 있습니다.

다음 명령어를 입력하여 cloudgoat에 대한 Profile을 추가해보겠습니다.

# Cloudgoat AWS Profile 추가
aws configure --profile cloudgoat
# 1) Acess ID 입력
# 2) Secreet Key 입력

 

 

 

이후 다시 cat ~/.aws/credentials 명령어로 출력해보면 아래와 동일하게 출력되는 것을 확인 가능하실 겁니다.

AWS API Access Key 출력

 

 

 

Profile이 추가되었다면 다시 ./cloudgoat.py create <시나리오> 명령어를 입력하면!

아래 사진과 같이 에러 없이 정상적으로 명령어가 실행되는 것을 확인할 수 있습니다.

명령어 실행 결과

 

 

이 글을 통해 문제가 해결되셨기를 바랍니다.

 

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

caul334@gmail.com

반응형
반응형

 

 

 

Python 프로그램을 개발을 할 때 개발 환경을 격리하기 위한 가장 간편한 방법은 어플리케이션 레벨 격리 입니다.

격리 방법은 파이썬 내장 모듈인 venv을 활용하면 됩니다.

 

 

 

  격리(가상) 환경  생성 명령어

# 1. 격리 환경(디렉토리) 생성
python3.<버전> -m venv <격리 환경 이름>

# 2. 격리 환경 활성화
source <격리 환경 이름>/bin/activate

# 3. python3 경로 출력
(<격리 환경 이름>) $ which python3

# 4. 격리 환경 비활성화
(<격리 환경 이름>) $ deactivate

# 5. python3 경로 출력
which python3

 

 

위 명령어를 실행해보면 which python3 명령어를 입력했을 때

격리 환경과 격리되지 않은 환경에서의 python3 경로가 다른 것을 확인할 수 있습니다.

위 명령어를 참고하셔서 Python 프로그램을 개발할 때 안전 하게 격리환경 안에서 개발을 진행하시면 됩니다.

 

 

이 글 이 도움이 되셨기를 바랍니다.

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

 

 

  Poetry는?

패키지 버전을 관리하지 않아도 손쉽게 Dependency 관리를 가능하게 해주는 도구

즉 poetry를 이용한 프로젝트는 패키지 버전에 종속되지 않고 어느 환경에서든 잘 돌아가게 만들어주는 도구이다.

 

pip를 이용하여 패키지를 설치하면 패키지를 설치할 때마다 requirements.txt를 작성해야 Dependency 문제가 해결됩니다.

하지만 poetry add <package_name> 명령어를 이용하면 따로 패키지 버전을 관리하지 않아도

편하게 Dependency 관리가 가능해집니다.

 

 

  Poetry 설치 방법

1. Ubuntu (linux)
sudo apt install python3-poetry

2. Powershell (Windows)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -

3. curl 이용
curl -sSL https://install.python-poetry.org | python3

 

 

  Poetry 기본 명령어

# 설치 및 버전 확인
poetry --version

# 새 프로젝트 생성
$ poetry new <project_name>

# 가상환경 실행
$ cd <project_name>
$ poetry shell

# 패키지 설치
$ poetry add <package_name>

 

 

해당 글이 도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

Ubuntu(Linux) 에서 파이썬 디펜던시와 가상환경 관리를 위해 poetry(포어트리)를 설치하려 했습니다.

 

하지만 아래와 같은 에러를 만났습니다.

 

  에러 메시지 내용

nick@ubuntu:~/python$ pip install --user poetry

error: externally-managed-environment

 

 

  에러 발생 원인

에러 발생 원인은 python 3.11 이상 버전부터 패키지 관리 정책이 변경되어
pip 명령어를 이용한 직접 설치 보다는 Ubuntu 시스템 패키지 관리자인 apt를 통해 패키지를 설치하도록 권장하기 때문입니다.

 

 

  문제 해결 방법

아래 3가지 해결 방법 중 원하는 것을 선택해 해결할 수 있습니다.

 

1. 시스템 패키지 관리자를 이용하여 설치

# 무조건 가상 환경 밖에 설치해야 하는 경우
sudo apt install python3-<package_name>

 

 

2. 프로젝트가 가상환경 안에 있다면 가상환경 안에 설치

# 격리 환경(디렉토리) 생성
python3.<버전> -m venv <가상 환경 이름>

# 격리 환경 활성화
source <가상 환경 이름>/bin/activate

# 패키지 설치
pip install <package name>

 

 

3. curl 유틸리티 이용한 설치

# 유틸리티를 이용한 설치
curl -sSL https://install.python-poetry.org | python3

 

 

 

위 방법을 통해 문제가 해결 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형



elasticsearch

 

 

엘라스틱서치를 Python으로 연동하면서 사용하고 있는데 갑자기 아래와 같은 에러가 발생하였다.

에러 메시지 화면

 

에러 메시지 내용

elasticsearch.BadRequestError: BadRequestError(400, 'search_phase_execution_exception', 'Result window is too large, from + size must be less than or equal to: [10000] but was [10005].

 

에러 원인

에러의 원인은 요청한 Index에 결과가 1만건 이상이기 때문에 발생한 것으로써 index.max_result_window 임계치를 넘어갔기 때문에 발생한 것이다. max_result_window의 기본 설정은 1만건이다.

 

 

  임시 해결 조치 방법

시간이 없을 때 일단 빠르게 해결 할 수 있는 방법은 문제가 발생한 Index에 대해 windows size를 늘리는 것이다.

기본 설정 값인 10000건에서 그 이상으로 늘리면 된다. 참고로 아래는 5만건으로 늘려 주었다

아래 코드는 Kibana > Dev Tools에서 실행 가능한 코드

PUT /<your index name>/_settings
{
  "max_result_window" : 50000
}

 

 

  영구 해결 방법

영구 해결 방법으로 가장 좋은 방법은 Scroll API를 사용하는 것 입니다.

Scroll API는 대량의 데이터를 효율적으로 검색할 때 사용하면 좋습니다.

# 검색할 인덱스와 쿼리 정의
index_name = "your_index_name"
query = {
    "query": {
        "match_all": {}  # 모든 문서를 검색하는 쿼리
    }
}

# Scroll 초기화
scroll_timeout = "2m"  # Scroll 세션 유지 시간
batch_size = 1000      # 한 번에 가져올 문서 수

# 첫 번째 Scroll 요청
response = es.search(index=index_name, body=query, scroll=scroll_timeout, size=batch_size)

 

 

이 글을 통해 문제가 해결 되셨기를 바랍니다^^

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

회사 업무를 수행하다보면 종종 통계를 위해 메일 제목 또는 메일 내에 있는 특정 문구가 얼마나 있는지 필요한 경우가 있습니다.

 

아래 Python 코드로 그러한 어려움을 해결할 수 있습니다.

 

필요하신 분은 자유롭게 사용하시면 되겠습니다^^

 

Python 코드

# mail_extractor.py
import re
import os
import extract_msg
# pip install extract-msg

def extract_subjects_from_msg(folder_path):
    # 메일에서 제목과 내용 return

    # 결과를 저장할 리스트
    objects = []

    for file_name in os.listdir(folder_path):
        tmp = []
        if file_name.endswith(".msg"):
            file_path = os.path.join(folder_path, file_name)
            try:
                # .msg 파일 열기
                with extract_msg.Message(file_path) as message:

                    # 메일 제목
                    subject = message.subject
                    # 메일 본문
                    body = message.body

                    tmp.append(subject)
                    tmp.append(body)
                    objects.append(tmp)

            except Exception as e:
                print(f"Error reading {file_name}: {e}")

    return objects



def find_content(pattern, body):
    # 일치하는 내용 메일 본문에서 찾기
    content = []

    # 일치 여부
    matches = re.findall(pattern, body)

    # 결과 저장
    for i, match in enumerate(matches, start=1):
        content.append(i)
        content.append(match)

    return content



if __name__ == '__main__':

    # 메일 들이 저장되어 있는 특정 폴더 경로
    folder_path = r"C:\Users\<경로>"

    # 제목, 내용 추출
    results = extract_subjects_from_msg(folder_path)

    # 결과 출력
    for subject, body in results:
        # 제목과 메일 본분만 출력
        print(f"Subject: {subject}, Body: {body}")

        # 찾을 특정패턴이 있는 경우 (아래 코드 활용)
        # 패턴 정의
        pattern = r"\[Rule\]\s*\n(.+)"
        content = find_content(pattern, body)
        print("Subject: {}, Content: {}".format(subject, content))

 

 

 

부족한 부분 또는 개선이 필요한 사항은 댓글 남겨주시기 바라면서

이 글이 도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Visual Studio

 

25년도에는 Back to Basic 마인드로 다시 C언어를 처음부터 시작해보자는 마음으로 Visual Studio 2022를 설치했습니다.

하지만 책에 있는 실습 예제들을 따라하는데 예기치 못한 에러를 만났습니다.

 


[Error Message]

빌드 오류가 발생했습니다. 계속하고 마지막으로 성공한 빌드를 실행하시겠습니까?


 

 

 

에러 발생 원인 C/C++에서 각 실행 가능한 프로그램은 단 하나의 main() 함수만 가질 수 있는데

위 에러는 두개 이상의 소스파일(.c)에서 각각 main() 함수를 가지고 있기 때문에 오류가 발생하게 됩니다.

 

 

 

  에러 해결 방법

 

에러를 해결하는 방법으로는 main() 함수를 가지는 하나의  소스코드 파일을 남기고 나머지 소스코드는 빌드에서 제외하면 됩니다.

 

빌드 제외 방법 : (비쥬얼 스튜디오 2022 기준) 소스코드 선택 > 오른쪽클릭 > 속성 > 빌드에서 제외 > 예 (선택)

 

빌드에서 제외 과정

 

 

빌드에서 제외하면 제외된 소스파일은 아래와 같이 파일 왼쪽에 빨간색 동그라미가 표시된 것을 확인할 수 있습니다.

 

빌드에서 제외한 소스코드

 

이후 실행하면 깔끔하게 에러가 없어지게 됩니다^^

 

에러 해결 후 실행 화면

 

문제가 해결 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

반응형
반응형

 

Sourcetree는 Git을 시각적으로 관리할 수 있는 무료 그래픽 사용자 인터페이스(GUI) 응용 프로그램입니다.

Atlassian에서 개발했으며, 복잡한 Git 명령어를 명령줄에서 입력하지 않고도 직관적으로 사용할 수 있게 해줍니다.

이번 포스팅에는 SourceTree 설치 방법에 대해 공유드립니다.

 

  설치 방법

 

1. 프로그램 다운로드 홈페이지(https://www.sourcetreeapp.com/) 접속

 

download for windows

 

2. 설치 파일(.exe) 실행

 

기본 설치를 위해 다른 것은 클릭하지 말고 바로 "건너뛰기"를 클릭합니다.

 

기본 설치

 

Mercurial 선택 해제 후 "다음" 클릭

Mercurial은 Git과 같은 버전관리 툴이지만 저희는 필요 없으므로 선택해제합니다.

궁금하신 분들은 설치하셔도 무방합니다.

 

Mercurial 설치 여부

 

 

Github의 Username과 Email 정보를 입력 후 "다음" 클릭

 

username, email 정보 입력

 

 

SSH 키를 불러오겠다는 물음에는 "아니오"를 선택합니다.

 

SSH 키 로드

 

 

설치가 완료 되었다면

Remote > 계정 추가 > GitHub > "OAuth 토큰 새로고침"을 클릭합니다.

 

GitHub 연동 방법

 

 

Github 로그인 후 Authorize atlassian을 클릭

 

 

Atlassian 연동 확인

 

 

연동이 완료되면 "인증성공" 확인 후 확인 클릭

 

Oauth 토큰

 

원격 저장소에 GitHub 정보가 연동되어 있는 것을 확인하면 설치와 GitHub 연동이 완료됩니다.

 

GitHub 연동

 

도움이 되셨기를 바랍니다.

 

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

 

형상관리(버전관리) 시스템인 Git을 Windows와 Linux(Ubuntu)에 설치하는 방법을 공유드리겠습니다.

 

 

  Windows 설치 방법

 

1. Git 홈페이지 접속

Git 홈페이지(https://git-scm.com/downloads) 이동하여 Download for Windows를 클릭합니다.

 

git 홈페이지

 

 

2. 64-bit Git for Windows Setup 클릭

대부분의 Windows는 64bit 이기 때문에 아래 "64-bit Git for Windows Setup"을 클릭합니다.

 

64-bit 다운로드 페이지

 

 

3. 다운로드 받은 파일 실행

다운받은 실행파일(.exe)을 실행하고 Install을 클릭합니다.

 

설치 파일 실행

 

(기본설정) Editor는 "use Vim"으로 확인 후 Next를 클릭합니다.

이후 아래 Branch 설정하는 부분이 나올 때까지 계속 기본 설정으로 진행합니다.

 

use vim 설정 확인

 

 

(설정변경 필요!!!) Override the defaut branch를 선택 후 main이 맞는 지 확인 후 Next를 클릭합니다.

이후 설치가 완료될 때까지 계속 기본 설정으로 Next를 클릭하여 진행합니다.

 

main 브랜치 설정 변경

 

설치가 완료되었다는 메시지를 확인하고 Finish를 클릭하여 마무리해줍니다.

 

Finish

 

 

4. 정상 설치 확인

 

설치가 정상적으로 되었는지 확인해 줍니다.

먼저 Windows 버튼 또는 검색을 클릭한 후 git bash를 입력합니다.

잘 설치 되었다면 아래와 같이 Git Bash 앱이 보이는 것을 확인할 수 있습니다.

 

 

 

 

  Ubuntu(Linux) 설치 방법

Linux 설치는 아주 간단해서 아래 코드와 주석으로 설명드리겠습니다.

 

# apt 업데이트
sudo apt-get update

# git 설치
sudo apt-get install git

# git 설치 확인
git --version

# main을 기본 브랜치로 설정
git config --global init.defaultBranch main

 

 

정상 설치 되면 아래와 같이 Git 버전을 확인할 수 있습니다.

 

git version 확인 명령어

 

 

도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형
반응형

 

nodejs

 

테스트를 위해 웹 서버를 빠르게 구축해야할 경우가 있습니다.

npm으로 간단히 웹서버를 구축하는 방법을 공유드리겠습니다.

 

npm

 

 

웹서버 구축 방법

 

1. Ubuntu에서 apt 명령어를 통해 nodejs와 npm을 설치합니다

# nodejs 설치
sudo apt-get install nodejs

# 버전 확인
nodejs -v

# npm 설치
sudo apt-get install npm

 

 

2. 웹 개발 프레임워크를 설치하고 및 프로젝트 이름의 폴더를 생성합니다.

# Express.js(웹 백엔드 개발 프레임워크) 설치
sudo npm install express-generator -g

# Node.js 웹 애플리케이션 프로젝트 생성
expresss <Project이름> --no-view

# 프로젝트 폴더 이동
cd <Project이름>

 

 

 

3. 프로젝트에 필요한 패키지를 설치하고 및 서버를 실행합니다.

# 프로젝트에 필요한 패키지 설치
npm install

# (나오는 경우) 취약점 조치
npm audit fix --force

# express 서버 실행
npm start

 

 

4. 서버 동작 확인

위 모든 작업이 완료되면 이제는 서버가 정상 동작하고 있는지 확인하는 작업만 남았습니다.

확인하는 방법은 아래 2가지 방법 중 하나만 하셔도 됩니다.

# 웹 브라우저 띄우고 접속 확인
http://localhost:3000

# 새 터미널 띄우고 접속 확인
curl http://localhost:3000

 

 

웹서버(Express) 동작 화면 - 웹 브라우저

 

 

웹서버(Express) 동작 화면 - CLI

 

 

도움이 되셨기를 바랍니다.

 

caul334@gmail.com

내용이 유용하셨다면 좋아요&댓글 부탁드립니다.
이 블로그를 이끌어갈 수 있는 강력한 힘입니다!

 

반응형

+ Recent posts