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를 추가해서 작성하기
설치가 되어 있으면 해당 부분 스킵 설치가 되어 있지 않다면 SSH설치 if문으로 풀기
내가 한 방식
if [ -d $ssh ]; then
echo already installed
else
echo start install
fi
강사님 방식
조건문이 0이 아니면 true (0이 아니라는 것은 이미 설치되어있다는 의미)
if [ -n $(dpkg --list |grep ssh | awk
{print $2}
) ]; then
echo already installed
else 조건문이 0이면 false
echo start install
fi
다른 방법
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는 interaction // 사용자와 apt가 상호작용하는 느낌, 줄래? 하면 뭐 줄까? 하는 느낌
apt-get은 일방적인 관계, 달라! 하는 주는 느낌
apt - 우분투에서는 상호작용
- 쉘 스크립트 시스템에서는 싫어함(경고)
apt-get - 쉘스크립트 시스템에서는 추천함
dpkg - 데비안이 사용하는 관리 시스템 (뭔가 투박함)강요아님!
소스트리할 때의 방식 3way(내가 하는거)-한명이 병합 rebase(해보면 좋은거)-다같이 병합