230510-linux

soo·2023년 5월 10일

Linux

목록 보기
4/6

리뷰:

  • 12장: 텍스트 처리. wc, sort, uniq, tr, head, tail, diff, cut
  • 13장: 정규 표현식. 정규 표현식 기호 외울것.
    - grep: 일치한 문자열이 포함된 행을 출력
    • 기본 정규 표현식 / 확장 정규 표현식
    • .(dot): 임의의 한 문자
    • *: 0회 이상의 반복
    • .*: 임의의 문자가 0회 이상 반복
    • ^, $: ^는 첫글자, $는 마지막 글자를 의미. ^$는 빈 행을 의미. ex) grep -v '^$' $file1
    • []: 특정 문자 지정. -(하이픈)을 통해 범위지정 가능([a-z])
    • {}: 문자의 반복 횟수 지정. {1,2} = 1~2번 반복, {2} = 2번만 반복, {2,} = 2회 이상 반복
    • (): 그룹화.
  • 14장: 고도의 텍스트 처리
    - sed: 문자열 치환. 비대화형 에디터
    • awk: 텍스트 처리.

ICM -> Install Configure Management


15장. 셸 스크립트

셸 스크립트란? 셸에서 실행될 커맨드 라인을 입력해 놓은 파일
단순히 명령어를 나열하기도 하지만, 조건 분기와 반복과 같은 복잡한 제어 구조도 사용 가능.
장점:
- 작업 자동화 가능. 복잡한 명령어를 직접 입력하는 수고를 덜 수 있음.
- 셸 스크립트를 한번 작성하면 이후에 비슷한 처리를 수행할 때 쉽게 재사용 가능.
- 다른 사람에게 셸 스크립트 공유 가능.
- 명령어를 잘못 입력하는 실수 방지 가능.

셸 선택: 셸 종류가 여러가지이므로, 어떤 셸을 쓸지 정하고 사용해야됨. 실습에서는 bash사용. sh, bash, 본쉘(Bourne Shell)...

sh를 사용해도 호환성 문제가 존재함.

쉘 스크립트 작성 -> Vim과 같은 텍스트 에디터로 입력

du -sh . 

-> 현재 파일의 파일 사용량 출력.


#! -> 셔뱅(shebang).


-> 파일 크기를 출력하는 homesize.sh 파일 생성 후, chmod 명령어로 +x로 지정하여 실행 권한 부여.


-> ./로 파일 실행. 정상 동작하는것 확인 가능.

#! -> 셸 스크립트에서 파일의 시작이 #!인 경우, 뒤의 명령어를 실행함.

source 명령어 -> source 명령어는 지정한 파일 안의 커맨드 라인을 쉘에서 직접 입력한 것과 동일하게 실행. #!으로 지정한 쉘이 아니라 현재 쉘이 사용되며, 파일을 직접 실행하는게 아니므로 파일에 실행 권한을 부여할 필요가 없음.
. 명령어 -> source 명령어와 완전히 동일하게 동작.

실행 방법 정리:
- 파일 이름만 실행.
- 쉘의 인자로 지정하여 실행.
- source 명령어를 사용하여 실행. -> 현재 설정된 쉘 환경에 영향을 받음.

source 명령어 사용시 파일이름 사용 이유 -> #!에 지정한 쉘에서 실행되기 때문에 현재 사용자가 사용하는 쉘에 영향을 받지 않음. -> 현재 쉘의 환경에 따라 실행이 안될 수도 있고, 현재 쉘의 변숫값이나 별명을 바꿀 수도 있기 때문.

./ -> 파일 이름 앞에 ./를 사용하지 않는 경우 명령어 실행 불가. -> 검색 경로에 등록된 디렉토리에 있지 않은 이상 쉘 스크립트를 이름만으로 실행할 수 없음. -> 상대 경로나 절대 경로로 파일의 위치 지정시 실행 가능.

which 명령어 -> 지정한 명령어의 위치를 출력.

echo 명령어 -> 검색 경로(쉘에서 명령어를 실행할 때 명령어 파일을 찾는 디렉토리) 확인 가능.

source 명령어 사용시 주의점 -> 파일 이름만 지정 가능. PATH에 지정된 디렉토리에 있는 쉘 스크립트라면 상대 경로나 절대 경로가 아닌 파일 이름만 지정 가능. -> 이름만으로 지정 하는 경우, 의도치 않은 스크립트 실행의 위험성이 높아짐.

shopt 명령어 -> sourcepath 옵션 비활성화 -> source 명령어에서 PATH에 지정된 디렉토리에서 파일을 찾지 않도록 설정 가능

ssh와 공개키 인증:
OpenSSH 패키지는 보안 쉘과 SSH프로토콜을 제공함
SSH 프로토콜 ->
SSH 명령어는

ssh 인증 방법 설명

ubuntu 에서 ssh server 설치:
- root 사용자로 권한 상승 후, apt install openssh-server 입력.
- 설치 진행 및 systemctl 명령어를 이용해 설치 확인

우분투를 설치한 vm은 내부-외부 통신을 위해 enp0s3(NAT 방식)을 외부로, enp0s8은 내부(centOS가 설치된 VM)와의 통신을 위해 각각 동적 ip, 정적 ip(내부통신, 192.168.56.102/24)로 설정해야 됨. -> 두 ip가 같은 경우 외부 통신 불가.(= ssh server 설치 불가)

.
- centOS VM에서 ssh <설정했던 ip> 입력 ->ubuntu의 ssh서버로 접속 시도. -> 암호를 입력해도 접속 거부됨.
- ssh <사용자 계정>@<설정한 ip> 입력 -> 접속 됨.

-> SSH Client 와 SSH Server 통신시 client에서 key pair를 만들고 Private key는 들고있고, Public key는 server로 보냄. -> client가 server에 접속할 때 서버가 public key로 암호화해서 데이터를 넘김. -> client는 자식이 갖고있던 private key, public key를 조합해 복호화함.

원격 linux 서버에 암호 없이 접속하기.
ssh-keygen 입력 -> public, pravite key 생성.

ssh-copy-id <사용자 계정>@<서버의 ip> 입력 -> local host의 public 키를 원격 host의 authorized_keys 파일에 복사.

-> 이후 연결에서는 암호를 물어보지 않음.

연결된 클라이언트들 확인 -> 잡속한 사이트에서 w 명령어를 통해 학인 가능. -> 명령어

ssh 접속시 사용자 계정명을 입력하지 않는 경우 -> root로 접근하는 것이 기본값임.

-> vi 로 sshd_config 내용 편집. PermitRootLogin을 yes로 변경.
업로드중..
-> set nu로 행 번호 출력 후 변경할 내용을 찾아서 변경.
업로드중..

-> root로 접근해도 로그인 됨을 확인.


profile
이것저것 공부하는

0개의 댓글