프로그래밍 언어/Shell 17

유용한 쉘 스크립트 시나리오 정리

쉘 스크립트의 exit code 분리하기 # 예시 : azure cli 로그인 여부 확인하기 if az account show &>/dev/null; then echo "Azure Logined!" else echo "You need to login Azure!" fi &>/dev/null 을 붙이면 쓰레기통(/dev/null)에 출력 결과물이 들어가고, exit code만 남게 된다. 마지막으로 실행한 스크립트의 exit code 확인하기 $? 변수값 만들어서 저장하기 # nowGroup에 group이라는 변수를 저장 후 출력한다 nowGroup=$(echo "group") echo $nowGroup $([본문])을 통해서 출력값을 저장한다. 폴더의 존재 확인하기 # 폴더 존재 확인 FOLDER_NAM..

Bandit Level 6 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 6 문제를 풀어 보자. 문제를 요약해 보자. 문제 암호를 찾아라. 암호가 있는 파일은 다음 조건을 만족한다. 사람이 읽을 수 있다. 1033 바이트의 크기 실행 불가능한 파일이다. 해설 find 명령어에 파일 사이즈를 제한할 수 있는 명령어가 있다. 이것으로 1차 분류 ls -al을 통해 실행 불가능한 권한을 가진 파일을 찾는다. 정답 find ./* -size +1032c -size -1034c ls -al 참고자료 https://coding-factory.tistory.com/804 [Linux] 리눅스 find 명령어 사용법 (파일 찾기, 검색) find 명령어 리눅스의 find 명령어는 리눅스 파일 시스템에서 파일을 검색하는 데..

Bandit Level 5 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 5 문제를 풀어 보자. 문제를 요약해 보자. 문제 사람이 읽을 수 있는 유일한 파일에 있다! 해설 인코딩 형식을 확인한다. 사람이 읽을 수 있는 파일을 아스키 코드라고 가정하고 아스키 코드 형식의 파일을 찾는다. 파일을 찾아 보니 한 개의 파일만 아스키 코드로 인코딩 되어 있었다. 정답 file ./-file* cat ./-file07 참고자료 https://linux.die.net/man/1/file file(1): determine file type - Linux man page file(1) - Linux man page Name file - determine file type Synopsis file [-bchikLNnprsvz..

Bandit Level 3 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 3 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름 사이에 공백이 있는 파일에 암호가 있다. 해설 큰따옴표로 묶어준다. 정답 cat "spaces in this filename" 참고자료 https://appuals.com/how-to-handle-passing-filenames-with-spaces-in-bash/ How to Handle Passing Filenames with Spaces in Bash Linux has a default shell Bash (aka Bourne again shell) to execute commands for the system. Most programmers prefer bash ove..

Bandit Level 2 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 2 문제를 풀어 보자. 문제를 요약해 보자. 문제 파일 이름은 "-" 이다. 해당 파일안에 암호가 있다. 해설 대시는 기본 파일 입출력에서 dev/stdin 또는 dev/stdout으로 인식할 수도 있다. 해당 파일을 열기 위해서는 전체 위치까지 지정해 주어야 한다. 정답 cat ./- # 또는 cat < - 참고자료 https://stackoverflow.com/questions/42187323/how-to-open-a-dashed-filename-using-terminal How to open a "-" dashed filename using terminal? I tried gedit, nano, vi, leafpad and oth..

Bandit Level 0 해설

❗️모든 문제는 Mac 기준으로 풀이합니다❗️ Bandit Level 0 문제를 풀어 보자. 문제를 요약해 보자. 문제 해당 호스트에 ssh 로그인 하세요. 포트는 2200번 입니다. 해설 -p 옵션을 사용하면 포트를 지정할 수 있다. 정답 ssh bandit0@bandit.labs.overthewire.org -p 2220 참고자료 https://linux.die.net/man/1/ssh ssh(1): OpenSSH SSH client - Linux man page ssh(1) - Linux man page Name ssh - OpenSSH SSH client (remote login program) Synopsis ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address..

tmux 명령어 정리

최근에 맥에서 사용중인 iterm이 오류란 오류는 죄다 뿜어내서 작업에 차질이 생겼다... 그래서 쉘 단에서 터미널 화면을 분할해서 사용할 수 있는 tmux라는 프로그램을 알게 되었고 (ssh 연결 중에도 해당 프로그램 사용이 가능하다!) , 이를 사용하기 위해서 자주 사용하는 명령어에 대해서 정리해 보았다. 설치 맥 기준으로 brew를 이용해 설치한다. brew install tmux 기본 컨셉 tmux 서버 : tmux 내부에서 실행되는 모든 프로그램을 관리하고 추적함. tmux 클라이언트 : 사용자는 클라이언트를 시작하여 tmux 서버에 연결한다. 세션 : tmux를 실행하면 세션이 실행된다. 각 클라이언트는 하나의 세션에 연결이 된다. 윈도우: 세션은 여러개의 윈도우로 구성이 된다. 사용자가 보는..

리눅스 date 사용하기

서버 배포 시에 마지막으로 배포한 시간을 알기 위한 스크립트를 작성하던 중, date라는 단순하지만 강력한 시간 출력을 제공하는 도구를 알게 되었다. 이 명령어를 자유자재는 아니지만 부족하진 않을 정도로 다루고 싶다는 생각이 들어 블로그에 잠깐 정리하려 한다. 날짜 출력 형식 옵션 기본 명령어 date를 치면 된다. 하지만 이걸로는 많이 부족하다. 출력 형식을 지정해서 다양하게 꾸며보자. 출력 형식 지정법은 date +"포맷" 형식을 따른다. 아래는 예시이다. date +'%Y-%m-%d %H:%M' # 2022-04-25 22:59 대표적인 포맷은 다음과 같다. %a : 축약된 요일 %A : 요일 풀네임 %b, %h : 축약된 월 이름 %B : 월 풀네임 %c : 로케일의 날짜 및 시간 %C : 마지막..