[Linux] Shell에서 date 다루기 리눅스 또는 유닉스 계열을 표시하기 위해선 다음과 같은 문법을 사용한다. 옵션 내용 -d 원하는 일자를 지정 + 출력 포맷 지정 포맷 설명 출력 +%a 요일 Mon +%A 요일 Monday +%Y 년 2018 +%b 월 Jan +%B 월 January +%d 일 04 +%m 달 05 +%D MM/DD/YY 형식 일자 출력 12/25/23 +%F YYYY-MM-DD 형식 일자 출력 2023-12-25 +%H 시간(24시) 16 +%I 시간(12시) 4 +%M 분 52 +%S 초 18 +%Z 타임존 KST 년월일 형태 date +"%Y-%m-%d" 2023-12-25 년월일 시간 date +"%Y-%m-%d %H:%M:%S" 2023-12-25 12:25:01 유..
[Linux] 리눅스 방화벽 구성 방화벽 (firewall) 네트워크를 통한 외부의 접속을 차단하려면 방화벽을 사용해야 함 Ubuntu 방화벽 관리 툴 - ufw ufw enable|disable ufw deny|allow service 방화벽의 룰을 허용|거부|삭제 등 설정하는 툴 centOS 방화벽 관리 툴 - firewalld firewall-cmd 방화벽의 룰을 설정하는 툴 --peramnent 옵션을 사용하면 영구적으로 allow 해준다
[Linux] 숨김 파일 용량 확인 디스크에 용량이 대부분 찼을 때, 어떤 파일이 용량을 차지하고 있는지 확인하고 싶었는데 du -sh * 명령어를 사용하면 숨겨진 파일의 용량이 나오지않아 확인이 어려웠다. 숨겨진 파일의 용량을 포함하여 확인을 하려면 --max-depth=1 옵션을 사용하면 된다 du -h --max-depth=1 이때, sort -hr 명령어를 같이 사용하면 크기가 큰 순서대로 정렬이 가능하다. du -h --max-depth=1 | sort -hr
[Shell Script] 배열 (array) 사용하기 쉘 스크립트에서 배열을 정의하고 배열의 길이를 알 수 있는 방법이 없을까하여 찾아보니 쉘에서도 array를 사용할 수가 있었다. 배열 정의 괄호 안의 값들을 배열의 요소로 설정하여 변수를 배열로 사용할 수 있다. 변수=(값1 값2 값3) 인덱스를 지정하는 것도 가능하다, arr만 출력하면 첫번째 값이 출력되고 [@]를 사용하면 전체 값이 출력된다. [] 내부에 인덱스 값을 지정해주면 특정 인덱스의 값을 출력할 수 있다. arr=('a' 'b' 'c') echo $arr a echo ${arr[@]} a b c echo ${arr[1]} b 배열에 요소를 추가하는 법은 다음과 같다. 배열+=(값) arr+='d' echo ${arr[3]} d 여러 요..
[Shell Script] 함수 만들기 아래 포스팅으로 AWS Cli에서 ELB를 Detach, Attach 하는 경우를 알아봤었는데, ELB의 타겟에 여러개의 인스턴스가 있는 경우에 함수를 사용하는 것이 효율적이라고 생각했다. [AWS Cli] ELB Detach, Attach 하기 [AWS Cli] ELB Detach, Attach 하기 AWS CLI로 ELB의 대상 인스턴스를 확인하고,Detach와 Attach하는 방법을 알아보자 aws cli 명령어를 사용하기 위해선 credential이 필요하다. 스크립트로 작성했기 때문에, Shell Sc heywantodo.tistory.com Shell Script에서 함수 생성하기 함수를 생성하는 방식은 두가지가 있다. 1. 코드 블록에 함수 이름을 지정..
[Linux] Curl 명령어 사용 시 진행 내용 가져오지 않기 스크립트를 실행 할 때, Curl 명령어를 반복적으로 실행해야 하는 경우가 있었는데. Curl 명령을 실행할 때마다 아래와 같은 진행 내용이 출력되어 로그를 확인하기 힘들었다. 진행 내용이나 메시지들을 출력하지 않게하려면 -s (--silent) 옵션을 사용하면 된다. curl -s -XGET ${TARGET_URL} >> ${ERROR_OUTPUT_FILE_PATH} 2>&1 참고 https://acet.pe.kr/836
[Linux] 에러 : Pseudo-terminal will not be allocated because stdin is not a terminal SSH 원격 접속 후 스크립트를 실행할 때, 명령어 실행 자체는 문제가 없었지만 아래와 같은 에러 메시지가 계속 발생했다. 위와 같은 에러 메시지가 발생하는 이유는, 터미널 처럼 상호작용을 하지 않아 SSH에 대해 지정된 명령어가 없기 때문이라고 한다. 해결 방법은 단일 명령어를 사용하거나, -T(혹은 -t -t) 옵션을 사용하면 된다고한다. ssh -i [user]@[ip주소] -T sh < ./script.sh 참고 https://blog.1day1.org/474
[Linux] HTTP Status Code 확인 리눅스에서 HTTP 상태코드 확인 -v 옵션을 사용하면, 헤더 통신 옵션을 출력한다. curl -v localhost:80 HTTP 상태코드만 확인하는 방법이 있나 찾아보니, curl로 호출한 뒤 status code를 확인 할 수 있는 방법이 있었다. curl의 stdout 출력 후 -w (또는 --write-out) 옵션으로 확인이 가능하다고 한다. curl -w " - status code: %{http_code}" "localhost:80" stdout 없이 상태코드만 출력을 하려면 -o 옵션을 사용하면 된다. 그밖에 -w 옵션과 함께 시간, 응답 사이즈 등을 확인할 수 있는 많은 변수들이 있다. 아래 문서에서 다양한 옵션을 확인 할 수 있다. h..
[Shell Script] 다른 소스 변수 불러오기 Source 쉘 스크립트에서 다른 위치에 있는 변수를 사용하고 싶을 때, source를 통해서 다른 스크립트의 변수를 불러올 수 있다. 변수를 모아놓은 스크립트를 작성한 후 vi variables.sh #!/bin/bash first_name=hello last_name=world 아래와 같이 source 명령어로 sh 파일 내의 변수를 사용할 수 있다 vi test.sh #!/bin/bash source ./variables.sh echo "Hi my name is ${first_name} ${last_name} !" 참고 https://ivvve.github.io/2018/11/20/linux/bash_source/
[Linux] Netcat (nc) 명령어 Netcat TCP 또는 UDP 프로토콜을 사용하여 네트워크 연결을 통해 데이터를 읽고 쓰는 명령어다. 파일을 전송하고. 포트를 스캔하는 등의 작업에서 아용할 수 있다. 일반적으로 포트가 열렸는지 확인하거나, 클라이언트 접속이 가능한지 확인하는 용도로 사용한다. nc [options] host port 옵션 옵션 설명 -u UDP 연결 -p 소스 포트 지정 -l Listen 모드로 포트 띄움 (들어오는 연결을 수신 대기) -z 단순 포트 스캔만 진행, 연결에 성공하면 연결을 종료 -v 더 많은 정보 확인 (네트워크 연결을 디버깅 할 때 유용한 출력을 활성화) 연결 성공 시 nc -zv localhost 22 Ncat: Version 7.50 ( https://n..
[Shell Script] for문 범위 지정하기 For문의 range Python의 range처럼 쉘 스크립트에서도 범위를 지정할 수 있다. 아래 예시는 1부터 10까지 순차적으로 반복한다. for i in {1..10} do echo ${i} done 순차적으로 감소하는 것 또한 가능하다. for i in {10..1} do echo ${i} done 증감폭 또한 지정해줄 수 있다. for i in {1..10..2} do echo ${i} done