Information Security Study

240220 리눅스(셸 스크립트로 일기장 파일 실습) 본문

네트워크 캠퍼스/Linux

240220 리눅스(셸 스크립트로 일기장 파일 실습)

gayeon_ 2024. 2. 20. 15:52

셸 스크립트 실습

셸 스크립트 활용의 장점과 환경설정

  • 셸 스크립트는 기존 명령어들을 조합해서 새로운 명령어를 만들 수 있다는 큰 장점이 있다.
  • 파이프라인, 리다이렉션 등의 셸을 기능과 셸 스크립트를 조합하면 다양한 문제를 해결할 수 있다.

 

 

우분투 22.04 버전을 사용해서 실습했다.

 

 

컨테이너를 켜준다.

 

 

 

apt update 후 file을 설치한다.

 

 

 

/usr/bin/* 경로인 모든 파일 중 shell script 를 검색해서 shell script로 작성된 명령어들을 확인할 수 있다.

 

 

 

root 계정 사용은 문제를 야기할 수 있기 때문에 사용할 계정을 추가했다.

 

 

 

생성한 계정으로 접속하고 sandbox 폴더를 만들었다.

이 폴더에 대부분의 스크립트를 작성할 것이다.

 

 

셸 스크립트를 사용하면 좋은 경우

1) 중규모 시스템에서 자동화하기

  • 셸 스크립트에는 변수 타입이 없고 객체지향 프로그래밍이 불가능하며 자료구조를 활용하는 프로그래밍이 불가능하다.
  • 따라서 대규모 시스템에서 사용하기에 부적합하고 소규모 시스템에서 사용하기에도 다소 작성이 복잡하기 때문에 애매한 점이 있다.

 

2) 성능보다 자동화 자체에 방점을 두기

  • 셸 스크립트는 기본적으로 한 행씩 명령어를 수행하기 때문에 속도가 다소 느리다.
  • 실행 속도가 중요하다면 다른 언어를 쓰는것이 좋다.

 

 

일기장을 작성하는 셸 스크립트 프로그래밍하기

이번 실습에는 vi, vim이 아닌 윈도우의 메모장과 같이 사용 가능한  nano 에디터를 써봤다.

 

 

새로 만든 계정에는 root 권한이 없으므로 exit으로 빠져나와서 nano를 설치해 준다.

 

 

 

sandbox 디렉토리로 경로를 이동한 후

nano diary.sh로 셸 스크립트 하나를 생성해 위와 같이 작성했다.

작성 완료 후 Ctrl+o, Ctrl+x로 저장 및 종료해 주면 된다.

 

 

스크립트 설명

  • ${HOME}/diary 라는 경로를 directory 변수에 저장한다.
  • 만약 directory 변수에 적힌 경로에 폴더가 존재하지 않는다면 mkdir 명령을 이용해 폴더를 생성해 준다.
  • 그리고 nano에디터를 이용해서 연도-월-일.txt의 형식으로 당일 서버시간 기준 날짜로 일기 파일까지 생성한다.

 

 

 

ll로 확인해 보면 diary.sh는 실행권한이 없다.

현재 권한은 644이기 때문에

 

 

chmod로 실행권한을 추가해줬다.

 

 

 

추가한 뒤에./diary.sh로 셸스크립트를 실행하면 

home 폴더 하위에 diary 폴더가 없으므로 폴더를 생성하고

연-월-일.txt 파일을 nano 에디터로 실행한다.

 

 

 

실행된 에디터로 일기를 작성하고 저장 후 빠져나왔다.

 

 

 

다시 실행을 해보면 저장된 오늘 날짜의 일기파일이 열리는 것을 확인할 수 있다.

이때 diary 폴더는 이미 존재하므로 생성되지 않는다.

 

 

일기장 셸 스크립트 개선하기

일기장 셸 스크립트를 개선하기 위해 다시 sh파일을 열어

오늘 날짜의 일기장이 없다면 상단에 날짜가 포함된 일기장을 생성하도록 수정할 것이다.

 

 

연-월-일.txt를 저장하는 dairyfile 변수를 사용해서 diaryfile이 존재하지 않는다면 > 기호로 해당 파일을 만들도록 스크립트를 수정했다.

 

 

 

./diary.sh로 실행하면 일기장 상단에 오늘 날짜가 입력된 채로 새 일기장 파일이 열리는 것을 볼 수 있다.