[Shell Script] 명령어 실패 시 재시도하기 로그인을 성공을 하면 다음 스크립트로 넘어가야하는데, 로그인에 실패를 하는 경우에도 다음 스크립트로 넘어가는 경우가 발생했다. 로그인에 실패를 하는 경우엔 Error가 포함된 메시지가 출력되기 때문에, 아래와 같이 로그인 명령어를 실행했을 때, "Error" 라는 단어가 포함 될 경우 명령어를 재시도하는 코드를 작성했다. while true; do output=$(eval $command_to_run 2>&1) if [[ $output == *"Error"* ]]; then echo "Login failed. Retrying..." echo "Enter Password : " else echo "Login successfully." break fi d..
[Shell Script] 파일 내용 여부에 따라 명령어 실행하기 명령어를 실행할 때, 로그인을 해서 토큰을 받아와야하는 경우나, 매 시간마다 인증을 받아야 하는 경우에 매번 스크립트를 실행할 때마다 인증을 받기는 매우 귀찮다. 그래서 토큰 파일에 내용이 있으면 로그인 명령을 실행하고, 그렇지 않으면 다음 커맨드를 실행하는 스크립트를 생성하기로 결정😉 처음엔 파일의 크기를 이용하는 방식으로 짰음 token_file="~/token_file" if [[ ! -s "$token_file" ]]; then $command_to_run else echo "File exists. Skipping command execution." fi 위 스크립트에서 ! -s 조건은 파일이 존재하고 크기가 0보다 큰지를 확인한다..
[Python] OS Python의 OS 모듈은 운영 체제와 상호 작용 하기 위한 다양한 기능을 제공하는 모듈이다. 파일 및 디렉토리 관리, 프로세스 제어, 환경 변수 액세스 등과 같은 운영 체제 수준의 작업을 수행할 수 있다. 먼저 모듈을 import 하자 import os 1. 디렉토리 관리 디렉토리 생성 os.mkdir("new_directory") 디렉토리 내용 확인 contents = os.listdir(".") print(contents) 현재 작업 디렉토리 확인 current_dir = os.getcwd() print(current_dir) 작업 디렉토리 변경 os.chdir("new_directory") updated_dir = os.getcwd() print(updated_dir) 디렉토..
[Python] Datetime 파이썬을 사용하여 데이터 분석을 하면 날짜&시간 데이터를 처리해야 하는 경우가 많다. 파이썬의 Datetime 모듈을 사용하면 날짜 및 시간을 생성, 조작 및 비교가 가능하다. Datetime 모듈의 간단한 사용법은 다음과 같다. 우선 datetime 모듈을 사용하기위해 import 해준다. from datetime import datetime, timedelta 1. 날짜와 시간 생성하기 datetime 클래스를 사용하여 현재 날짜와 시간을 가져온다. now = datetime.now() print(now) #2023-07-05 17:32:25.476787 날짜와 시간을 생성한다. date = datetime.date(2023, 7, 5) print(date) #2023..
[Terraform] LoadBalancer 생성 🔎LoadBalancer 여러 대상 인스턴스 또는 컨테이너로 들어오는 트래픽을 분산시켜 애플리케이션의 가용성과 확장성을 향상시키는 중요한 구성 요소 HTTP 앱애는 ALB(Application Load Balancer)가 가장 적합하기 때문에, ALB를 생성해줄 것이다. 생성을 하기 전, ALB의 구성을 먼저 살펴보자 리스너 : 특정 포트와 프로토콜을 수신 리스너 규칙 : 리스너에 들어오는 요청을 가져옴 => 특정 경로 및 호스트 이름과 일치하는 요청을 대상 그룹으로 보냄 대상 그룹 : LB에서 요청을 받는 하나 이상의 서버, 서버의 상태를 확인하고 요청을 정상 노드로 보냄 ALB는 대상 그룹에 대상을 등록하고, 대상 그룹으로 트래픽을 라우팅한다. 작업 ..
[Terraform] Key-Pair 생성 후 EC2 인스턴스 SSH 접속 앞서 테라폼으로 생성했던 EC2 인스턴스들은, Key가 없기때문에 SSH 접속을 할 수가 없었다. Terraform에는 Key를 사용하거나 Key를 생성하는 방법을 사용하여 SSH 접속을 할 수가 있다. 1. 기존에 있는 Key 사용하기 resource에 key_name을 추가해주면 된다. 나는 기존에 사용하고 있던 key 이름이 test 였기때문에, test로 두었다. resource "aws_instance" "web" { ami = "ami-0c9c942bd7bf113a2" #ubuntu 22.04 instance_type = "t2.micro" vpc_security_group_ids = [aws_security_group..
[AWS] AWS CLI를 사용해 SQS 대기열 관리하기 AWS CLI를 통해서 SQS 대기열을 제어하고 관리할 수 있다. 다음은 많이 사용 할 수 있는 CLI 명령어들이다. 현재 리전에서 사용 가능한 모든 대기열 나열 aws sqs list-queues 접두사가 일치하는 대기열 나열 aws sqs list-queues --queue-name-prefix "prefix" SQS 대기열 생성 + 태그 추가 aws sqs create-queue --queue-name my-sqs-using-cli-with-tag --tags "env"="test" 속성 지정도 가능 aws sqs create-queue --queue-name my-sqs-using-cli-with-attribute \ --tags "env"..
[AWS] SQS 모니터링 SQS 메시지 대기열을 모니터링 하는 방법은 다음과 같다. 아래는 공식 Document https://docs.aws.amazon.com/ko_kr/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-logging-monitoring.html Amazon SQS 로깅 및 모니터링 - Amazon Simple Queue Service 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오. docs.aws.amazon.com SQS및 CloudWatch는 통합되므로, SQS 대기열에 대한 지표를 보고 CloudWatch를 분석하는 데 사..
[Python] 시간 지난 파일 자동 삭제 파이썬 OS 모듈을 사용해서 시간이 지난 파일을 자동 삭제하는 코드 예제 🔎OS 모듈 OS에 의존하는 다양한 기능을 제공하는 모듈 파일이나 디렉토리 조작이 가능하다. 아래는 OS 모듈을 사용해 30일이 지난 파일을 삭제하는 코드다. import os import time # 삭제할 디렉토리 경로 directory = "/path/to/directory" # 현재 시간 구하기 current_time = time.time() # 디렉토리 내의 파일 목록 확인 for filename in os.listdir(directory): file_path = os.path.join(directory, filename) # 파일인지 확인 if os.path.isfile(file..
[Webhook] 웹훅 (Webhook) 이란? 웹훅 (Webhook) 웹 서비스의 이벤트 데이터를 전달하는 HTTP 기반 콜백 함수 특정 이벤트가 발생하면 웹훅이 클라이언트에게 이벤트 데이터를 보낸다. 이벤트는 주로 HTTP POST 요청으로 전송되며, 대부분의 웹 서비스에선 API 엔드포인트로 사용된다. 일반적으로 웹 애플리케이션에서는 사용자의 특정 동작 (ex) 새로운 주문 생성, 새로운 메시지 수신 등) 에 대한 이벤트가 발생할 때마다 웹훅을 통해 외부 시스템으로 데이터를 전송한다. 🤔웹훅은 언제 사용될까? 웹훅은 주로 실시간으로 데이터를 전달하고, 애플리케이션 간에 통신을 효율적으로 하기위해 사용된다. 예를 들어, 소셜 미디어 플랫폼에서는 새로운 게시글이나 댓글이 작성될 때마다 웹훅을 사용하여 ..
[Terraform] AWS Custom VPC 생성 AWS 콘솔에서 VPC를 생성하면 클릭 클릭으로 매우 간단하게 생성이 된다, 미리 보기를 보면 어떤 리소스들이 생성되는지 확인이 가능하다. 테라폼으로 Custom VPC를 생성하기 위해선 위와 같은 리소스들을 모두 생성해줘야 한다. 1. VPC 생성 vpc.tf 라는 새로운 파일을 하나 생성해준다. 위의 리소스를 모두 생성하려면 코드가 매우 길어지니 주석으로 분리를 해준다. #aws_vpc resource "aws_vpc" "vpc" { cidr_block = "10.0.0.0/16" instance_tenancy = "default" enable_dns_support = true enable_dns_hostname = true tags = { Nam..
1. 데이터베이스 별 용량 조사 SELECT table_schema AS 'DatabaseName', ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)' FROM information_schema.tables GROUP BY table_schema ORDER BY 2 DESC; 2. 테이블 별 용량 조사 SELECT table_name AS 'TableName', ROUND(SUM(data_length+index_length)/(1024*1024), 2) AS 'All(MB)', ROUND(data_length/(1024*1024), 2) AS 'Data(MB)', ROUND(index_length/(1024*1024), 2) AS 'Inde..