Linux 수업(5)

신동욱·2023년 11월 20일
0

리눅스

목록 보기
5/6

📚 LINUX

📍 VirtualBox

📌 실습

FTP 실습

FTP(File Transfer Protocol)
1. FTP 설치
2. 버츄얼 박스 포트포워딩
3. 윈도우 환경에서 FTP 서버 접속
4. 파일 다운로드 / 업로드 테스트

포트포워딩 왜 쓰는가?

LB(Load Balance)에서 서버로 포트를 연결해준다.
LB는 보안역할도 하고 서버에 밸런스있게 나눠준다.

설정파일

listen : 옵저버 객체가 계속 지켜봄(listening)
- 접근하는지 안하는지 옵저버가 리스닝(대기)하고 있다가 누가 오면 서브젝트에 알려줌
anonymous : 익명접근허용여부
write_enable : 쓰기권한
chroot : 화이트리스트 설정
- 설정을 알아보고 실제로 필요한 것인지 확인하는 과정도 중요

v4와 v6차이
- ipv4 : 192.168.7.6 한칸에 255개씩 설정가능(~십억개)
- ipv6 : ipv4로는 감당이안되서 추가적으로 나옴 16진수로 이루어짐(~조개)

📌 환경변수

쉘 내에서 로그정보를 저장할지 버릴지 어떻게 저장할지를 정할 수 있다.
1> ls.out 성공한 명령어 저장
2> error.out 에러가 발생한 명령어 저장
2> /dev/null 휴지통

설정
SOMETHING=test / SHELL(변수) 내용등록
export SOMETHING / SHELL을 환경변수로 등록
env | grep SOMETHING / SOMETHING환경변수확인
export -n SOMETHING / 환경변수 해제 -> SHELL로 바꿈
echo $SOMETHING / 쉘을 확인하려면 $필요
unset SOMETHING / 변수제거

별명등록
alias / 별명
필요한 단축키를 설정할수있다.
alias lls='ls -l' / 로 설정
unalias lls / 설정 해제

히스토리
history / 검색 내역확인
history -c / 내역 초기화
history -d 1 / 1번 내역 삭제

기본설정프로그램
sh setup.sh 로 쉘 실행가능
setup.sh에 sudo apt update를 하고 실행하면 안에 있는 내용이 실행이 된다.
setup.sh에 "Time is $(date)"를 실행하면 날짜가 실행됨
추가로 비슷하게 "Time is date"도 가능

setup.sh에 1> ls.out을 작성해서 실행하면 ls.out에 들어감(새로고침)
1>> ls.out을 하면 위에 추가가 된다.(짝대기 두개)
그리고 설치할때는 y/n 무한로딩되기때문에 왠만하면 install -y를 추가해서 작성하기

📌 실습

if문 실습

설치가 되어 있으면 해당 부분 스킵 설치가 되어 있지 않다면 SSH설치 if문으로 풀기

내가 한 방식

if [ -d $ssh ]; then
echo already installed
else
echo start install
fi

강사님 방식

  1. 조건문이 0이 아니면 true (0이 아니라는 것은 이미 설치되어있다는 의미)

    if [ -n $(dpkg --list |grep ssh | awk {print $2}) ]; then
    echo already installed
    else 조건문이 0이면 false
    echo start install
    fi

  2. 다른 방법

    if [ -n $(dpkg --list |grep ssh) ]; then
    echo already installed
    else
    echo start install
    fi

파일이 있으면 삭제후 설치 없으면 그냥 설치

if [ -n "$(apt list --installed | grep ssh)" ]; then
echo "start remove"
apt remove $(apt list --installed | grep ssh | awk -F/ '{print $1}')
echo "complete remove"
echo "start install"
sudo apt-get install -y ssh
echo "complete install"
else
echo "just install"
sudo apt-get install -y ssh
fi

여기서 -n은 조건문의 문자열의 길이가 0이 아니면 참
비슷하게 -z는 조건문의 문자열의 길이가 0이면 참

apt remove $(apt list --installed | grep ssh | awk -F/ '{print $1}')으로 패키지를 삭제해야함
-> 이유 패키지 자체가 의존성으로 연결되어있어 다른 ssh도 같이 삭제 해주어야한다
-> awk -F/ '{print $1}' 는 /를 중심으로 1(첫번째꺼) 를 불러온다
-> awk 는 파일을 원하는대로 필터링하거나 추가 및 가공을 할 수 있다.
-> apt remove ssh ssh-import-id 는 모두삭제(뒤에 ssh-import-id은 공백 확인)

이때 위랑 아래랑 겹치기 때문에
INSTALLED_SSH = "$(apt list --installed | grep ssh | awk -F/ '{print $1}')"
로 변수를 저장하고

if [ -n "${INSTALLED_SSH}" ]; then
echo "start remove"
apt remove ${INSTALLED_SSH}
echo "complete remove"
echo "start install"
sudo apt-get install -y ssh
echo "complete install"
else
echo "just install"
sudo apt-get install -y ssh
fi

로 바꿔줄 수도 있다. 변수로 저장하는 이유는 가독성이 좋기때문이다.

📍 알아두면 좋은 지식

apt와 apt-get의 차이

apt는 interaction // 사용자와 apt가 상호작용하는 느낌, 줄래? 하면 뭐 줄까? 하는 느낌
apt-get은 일방적인 관계, 달라! 하는 주는 느낌

쉘에서의 apt

apt - 우분투에서는 상호작용
- 쉘 스크립트 시스템에서는 싫어함(경고)
apt-get - 쉘스크립트 시스템에서는 추천함
dpkg - 데비안이 사용하는 관리 시스템 (뭔가 투박함)강요아님!

소스트리

소스트리할 때의 방식 3way(내가 하는거)-한명이 병합 rebase(해보면 좋은거)-다같이 병합

profile
일단 고

0개의 댓글