코드스쿼드 CS02 - 가상머신 리눅스, 쉘 스크립트

2022. 1. 6. 19:59회고

반응형

가상머신 리눅스 요구사항 :

  • 각자 컴퓨터 환경에서 사용할 수 있는 가상 환경(Virtual Machine)에서 리눅스 운영체제를 설치한다.
  • 가상 환경에 원격으로 접속할 수 있도록 ssh 설정을 하고, root 계정 이외에 본인 접속할 계정을 추가한다.
  • 본인 계정에 대한 패스워드를 설정한다.
  • 로컬 컴퓨터에서 가상 환경 리모트 컴퓨터에 ssh로 접속해서 본인 계정으로 로그인한다.
  • 본인 계정에서 /backup 디렉토리를 생성하고 764 모드로 접근 권한을 바꿔서, 본인 계정으로 쓸 수 있도록 설정한다.
  • 리눅스를 설치하고 가상 환경에서 터미널을 열고 date 날짜를 오늘 날짜로 출력한 상태로, 화면을 캡처한다.

 


 

<ssh 접속하기>

사용한 명령어 :

$ sudo apt update
$ sudo apt install openssh-server

[openssh-server] 를 설치

 

$ sudo systemctl enable ssh
$ sudo systemctl start ssh

[ssh server] 실행

 

우분투는 기본적으로 ssh client가 설치되어있음.

ip 확인후 ssh client로 username@ip_adress 접속

 

 


 

< root 계정 이외에 본인이 접속할 계정 추가 >

 

sudo adduser <username>

명령을 사용해서 유저 생성, 기타 정보는 공백으로 두고 생성한다

 

 

다시, root계정이 접속했던 것과 동일하게

생성한 계정으로 우분투에서 ssh접속

 

 

생성한 계정으로 로컬(windows 10)에서 ssh접속

 

< backup 디렉토리 생성 후 764 권한 >

764가 의미하는바

r 실행, w 쓰기, x 실행

chmod와 권한 관련내용 : https://recipes4dev.tistory.com/175

 

생성후 권한 부여

 

 

 

< 날짜 출력 >

 

 

 

 


 

쉘 스크립트 요구사항 :

  • 내 PC의 특정한 디렉토리 아래 day1 부터 day16까지 문제 해결을 저장한 디렉토리가 있다고 가정한다.
    • 각 디렉토리 아래에는 작업한 소스 파일들이 들어있다.
    • 작업한 소스는 a.cs 처럼 파일 내용은 없어도 되고, 확장자가 cs로 끝난다.
  • bash 셀 스크립트로 현재 디렉토리 아래있는 day1에서 day16 디렉토리 중에서 있는 .cs 파일만 zip으로 압축해서 백업하는 스크립트를 자동화해서 구현한다.
    • 백업 파일이니까 어떤 제약사항이 있는지 고민해본다.
    • 디렉토리 정보를 포함해야 하나? 다른 디렉토리에 파일이름이 겹칠 수 있나?
  • 스크립트 진행 도중에 .cs 파일이 없는 디렉토리가 있으면, 어느 디렉토리가 없는지 문구를 출력한다.
  • 예를 들어 day7/ 경로 아래 .cs 파일이 없으면 day7 is empty 같은 문구를 출력할 수 있다.
  • 스크립트는 .cs 파일들을 압축해서 가상머신 리눅스 /backup 경로에 복사한다.
  • 로컬에 생성한 .zip 파일은 scp 명령을 사용해서 가상 머신으로 복사한다. (패스워드를 입력하는 단계를 생략할 필요는 없다.)
  • 백업 파일 이름에는 실행한 날짜를 붙여서 복사한다. 예시) backup_20220105.zip

 

< 쉘스크립트 hello, wolrd! 출력 >

hello, World 출력 예시

 

로컬에 폴더 및 cs파일 생성

(수작업... 이것도 스크립트 실력이 늘면 자동생성 할 수 있겠지..)

 

로컬에서 wsl 세팅 후 쉘 스크립트 작성

 

 

하지만 scp 명령에서 permission denied 가 발생한다

그냥 들여보내줘.....

시도해본 방법 :

  • chmod로 권한 부여 - 실패
  • scp 명령 앞에 sudo 붙이기 - 실패
  • 파일 경로 자세히 붙이기 ex) /home/leezzangmin/backup_$today.zip - 실패
  • 알고보니 username이 zzangmin 이 아니라 zzang 이였다. 될리가 없었네 ^^; - 성공!

허무하지만 이렇게 삽질을 조금이라도 해보는게 더 느는 방법... 스택오버플로우는 왜 들어갔을까..

 

remote 서버에 잘 들어가있는 zip파일!

 

더 해볼 것 : 

  • 파일명이 중복일 경우
  • 패스워드 입력을 생략해야 진정한 자동화가 아닐까
  • crontab 적용해보기?
  • day1 ~ day 16까지 파일생성하는 스크립트 작성해보기

 

 

 

 

 

 

 

참고자료 :

https://unluckyjung.github.io/linux/2020/07/31/Ubuntu_ssh_connect/

https://itmir.tistory.com/679

https://codechacha.com/ko/ubuntu-install-openssh/

https://tomcabin.tistory.com/3

https://blog.gaerae.com/2015/01/bash-hello-world.html

https://wikidocs.net/47974

https://shlee1990.tistory.com/918

반응형