[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/
[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
[Linux] apt 패키지 버전 다운 그레이드RDS에 접속 하기위해 mysql-client를 설치했는데, 버전 지정 없이 설치 할 경우 8.0.34 버전이 설치가된다.현재 mysql-client 8.0.34 버전은 불필요한 에러 로그가 많이 발생하는 이슈가 있어, 다운그레이드를 진행했다.(관련 내용은 https://bugs.launchpad.net/ubuntu/+source/mysql-8.0/+bug/2031548 에서 확인 가능) 현재 설치된 패키지의 버전을 확인하는 방법은 다음과 같다.dpkg --list | grep 패키지 버전 확인apt로 설치된 패키지를 다운그레이드 하는 과정을 진행해보자.먼저 패키지 저장소에 설치할 수 있는 버전을 확인해야한다.sudo apt-cache madison mys..
[Linux] 네트워크 관련 명령어 정리 1. Curl/Wget 웹 서버로 부터 컨텐츠를 가져오는 명령어 HTTP, HTTPS, FTP 프로토콜을 통해 컨텐츠를 다운로드 한다. HTTP Post request를 지원한다. curl google.com wget google.com 2. nslookup DNS 서버에 질의하여 도메인의 정보를 조회하는 명령어 nslookup google.com IP로 도메인 네임을 조회하는 것도 가능하다. nslookup 3. Telnet 원격 호스트와 텍스트 기반으로 통신하기 위한 프로토콜 TCP/IP 프로토콜을 사용하여, 특정 포트에 접속하여 원격 서버와 통신한다. telnet google.com 80 4. Ping 네트워크 상태를 확인하려는 대상에게 패킷을 보낸 후 대상..
[Linux] 환경 설정 파일 정리 /etc/profile 시스템 전역 쉘 변수 user가 쉘이 로그인하게 되면 가장 먼저 읽는 파일 USER, LOGNAME, HOSTNAME 등의 쉘 변수들이 선언되어 있음 시스템 전역 쉘 변수들을 초기화 /etc/bashrc 쉘 함수, Alias 시스템 전역 변수 정의 각종 쉘 함수와 alias를 위한 전역 변수들을 정의 ~/.bash_profile 유저 개인의 환경 설정 시스템 전역에 적용되는 환경 설정이 아닌, 유저 개개인의 PATH, 시작 프로그램 등을 추가적으로 설정 가능 ~/.bashrc 유저 개인의 alias 및 변수 설정 /etc/bashrc 파일에서 시스템 전역 변수를 읽음 이 파일에서 유저 자신의 개인적인 명령어 alias, 환경 변수를 설정할 수 있..
[Linux] Symbolic Link Symbolic Link? 링크를 연결하여 원본 파일을 대신해 다른 이름으로 파일을 지정 윈도우의 바로가기 심볼릭 링크 설정은 간단하다 ln -s [원본 파일|디렉토리][연결 할 파일명|디렉토리명] 설정을 하고 확인을 할 수 있다. 화살표 기준 오른쪽에 있는게 원본 파일이고 왼쪽에 있는게 바로가기 파일이다. 디렉토리도 물론 설정이 가능하다. 삭제도 간단하다. rm [바로가기로 설정한 파일|폴더 명]
[Linux] 리눅스 권한 1. 특정 유저에게 특정 command 권한 아래 파일을 통해서 command 권한을 줄 수 있음 vi /etc/sudoers 특정 유저&그룹의 멤버들에게 sudo 권한을 부여 #User privileage specification : sudo 권한을 부여 할 사용자 명 추가 #Allow members of group sudo to execute any command : sudo 권한을 부여 할 그룹 추가 ALL이 아닌 NOPASSWD 로 두고 뒤에 command를 주면 특정 커맨드만 사용이 가능하다 %username ALL={ALL}NOPASSWD:/usr/sbin/useradd 2. 파일, 디렉터리의 소유권과 허가권 2-1. 파일 유형 파일이 어떤 종류인지 나타낸다. 디렉터..
[Linux] 리눅스 계정 리눅스 계정과 권한에 대한 개념이 헷갈려서 정리 리눅스 계정 리눅스 계정은 ID가 아닌 UID로 관리한다. 계정 uid/gid 설명 root 0 시스템 관리자 계정 디바이스 추가/삭제, 계정 생성/삭제, 프로그램 설치 등 system account 1 - 499 애플리케이션들이 사용하는 계정 /sbin/nologin local user 500 - 60000 리눅스 사용자 계정 유저의 홈 디렉토리는 /home/ $ 계정 관리 데이터베이스 파일들 /etc/passwd 로그인 계정 정보 root:x:0:0:root:/root:/bin/bash ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash /etc/group 로그인 그룹 정보 root:x:0:..
[Shell Script] 파일의 변경 시간에 따라 조건 설정하기 https://heywantodo.tistory.com/137 위 포스팅에서 토큰 파일에 내용이 있으면 로그인 명령을 실행하는 스크립트를 구성했는데, 토큰 파일이 만료되면 파일이 사라지는게 아닌 그대로 있고 토큰 코드만 만료되는 것이었다 😱 😱 생각해보면 당연한건데 😢 그래서 토큰 코드는 1시간 주기로 새로 받아야하니, 토큰 파일의 변경시간을 확인하고 1시간 이상 변경이 없다면 로그인을 수행하는 스크립트로 새로 구성했다. 새롭게 구성한 스크립트는 다음과 같다. #!/bin/bash file_path="/path/to/file.txt" # 파일의 변경 시간을 가져옴 file_modified=$(stat -c %Y "$file_path") #..
[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보다 큰지를 확인한다..