DSTBX2023(2)

Author

SEOYEON CHOI

Published

January 3, 2024

실습13: 코드스페이스에 작업한 블로그를 윈도우로 pull (강의용 윈도우 컴퓨터)

git switch gh-pages
git add .
git commit -m .
git switch main
git add .
git commit -m .
git push
!ls

리눅스 명령어 주피터 노트북에서 쓰기

!ls ..

상위 목록 보기

!ls .. > ttt.txt

상위 폴더에 있는 파일 이름들 txt파일로 만들기

!cat ttt.txt

파일 확인 하는 방법

!chmod +x ddd.sh
Note

리눅스에서 cat 명령어는 concatenate(연결)의 약자로, 파일의 내용을 화면에 출력하거나 파일을 합쳐주는 데 사용됩니다. 주로 텍스트 파일의 내용을 확인하거나 여러 파일을 하나로 합칠 때 사용됩니다.

fnames=(
    "sss.txt"
)
for fname in "${fnames[@]}"; do
    echo "File: $fname"
    cat "../1dayhw/$fname"
    echo "----------------"
done

실습14: quarto publish 의 동작이해 (강의용 윈도우 컴퓨터)

질문1: git add .

-> git commit -m .

-> git push

-> quarto publish –no-browser –no-prompt 순서로 꼭 업로드 해야하는가?

그냥 단순히 “quarto publish –no-browser –no-prompt” 만 하면 안되는가?

실습13: 숙제검사

- 이거 클론하세요

- 방법1

!ls ../1dayhw 
baek_gm.txt   guebin.txt     jinsil.txt   seongjoon.txt
choyun.txt    handoehee.txt  junhan.txt   seunghoon.txt
coco.txt      hyeonji.txt    leejjae.txt  soonwon.txt
daehyeon.txt  jeongmin.txt   mingu.txt    suwhan.txt
!cat ../1dayhw/choyun.txt

- 방법2

!ls ../1dayhw > fnames.txt
!chmod +x show.sh
#!./show.sh

sh 확장자는 bash로 하자

- 방법3: 아래의 파일을 생성하고 출력

show2.sh
fnames=(
    "baek_gm.txt" "guebin.txt" "jinsil.txt" "seongjoon.txt"
    "choyun.txt" "handoehee.txt" "junhan.txt" "seunghoon.txt"
    "coco.txt" "hyeonji.txt" "leejjae.txt" "soonwon.txt"
    "daehyeon.txt" "jeongmin.txt" "mingu.txt" "suwhan.txt"
)
for fname in "${fnames[@]}"; do
    echo "File: $fname"
    cat "../1dayhw/$fname"
    echo "----------------"
done
#!bash show2.sh

- ./show2.shbash show2.sh 의 차이?

  • 스크립트의 권한, 셸 지정
  • 잘 모르겠어요
Note

!bash show.sh 명령어는 show.sh 스크립트를 Bash 셸에서 실행하는 명령어입니다. 이 명령어는 일반적으로 사용자가 현재 셸에서 직접 스크립트를 실행하고자 할 때 사용됩니다.


저 숙제를 바탕으로 183 컴퓨터에 계정을 생성했습니다.

그냥 참고용.. 이렇게도 가능함 ㅎㅎ

file_names = [
    "baek_gm", "guebin", "jinsil", "seongjoon",
    "choyun", "handoehee", "junhan", "seunghoon",
    "coco", "hyeonji", "leejjae", "soonwon",
    "daehyeon", "jeongmin", "mingu", "suwhan"
]
for username in file_names:
    print(f'adduser {username} --gecos "" --disabled-password && echo "{username}:jbnu" | chpasswd && usermod -aG sudo {username}')
adduser baek_gm --gecos "" --disabled-password && echo "baek_gm:jbnu" | chpasswd && usermod -aG sudo baek_gm
adduser guebin --gecos "" --disabled-password && echo "guebin:jbnu" | chpasswd && usermod -aG sudo guebin
adduser jinsil --gecos "" --disabled-password && echo "jinsil:jbnu" | chpasswd && usermod -aG sudo jinsil
adduser seongjoon --gecos "" --disabled-password && echo "seongjoon:jbnu" | chpasswd && usermod -aG sudo seongjoon
adduser choyun --gecos "" --disabled-password && echo "choyun:jbnu" | chpasswd && usermod -aG sudo choyun
adduser handoehee --gecos "" --disabled-password && echo "handoehee:jbnu" | chpasswd && usermod -aG sudo handoehee
adduser junhan --gecos "" --disabled-password && echo "junhan:jbnu" | chpasswd && usermod -aG sudo junhan
adduser seunghoon --gecos "" --disabled-password && echo "seunghoon:jbnu" | chpasswd && usermod -aG sudo seunghoon
adduser coco --gecos "" --disabled-password && echo "coco:jbnu" | chpasswd && usermod -aG sudo coco
adduser hyeonji --gecos "" --disabled-password && echo "hyeonji:jbnu" | chpasswd && usermod -aG sudo hyeonji
adduser leejjae --gecos "" --disabled-password && echo "leejjae:jbnu" | chpasswd && usermod -aG sudo leejjae
adduser soonwon --gecos "" --disabled-password && echo "soonwon:jbnu" | chpasswd && usermod -aG sudo soonwon
adduser daehyeon --gecos "" --disabled-password && echo "daehyeon:jbnu" | chpasswd && usermod -aG sudo daehyeon
adduser jeongmin --gecos "" --disabled-password && echo "jeongmin:jbnu" | chpasswd && usermod -aG sudo jeongmin
adduser mingu --gecos "" --disabled-password && echo "mingu:jbnu" | chpasswd && usermod -aG sudo mingu
adduser suwhan --gecos "" --disabled-password && echo "suwhan:jbnu" | chpasswd && usermod -aG sudo suwhan

실습14: 183 컴퓨터 접속 + passwd

passwd

실습15: 183에서 git의 설치 및 연결

which git
!which git
/usr/bin/git
  • 위치 확인
ls gi*

gi로 시작되는 파일들 찾아줘

sudo apt-get install git
  • 리눅스 배포판에서 사용되는 패키지 관리 도구인 apt-get

설치

sudo apt-get remove git

삭제

Note

일반 사용자, 슈퍼 사용자, 루트 사용자는 리눅스 및 유닉스 기반 운영 체제에서 사용되는 용어로 각각 다른 권한 수준을 나타냅니다.

  1. 일반 사용자 (Regular User):
    • 일반적인 사용자 계정으로, 시스템에 로그인하여 일반적인 작업을 수행합니다.
    • 시스템 리소스 및 파일에 대한 접근 권한이 제한적입니다.
    • 시스템 전반을 관리하거나 변경할 수 있는 특별한 권한이 없습니다.
  2. 슈퍼 사용자 (Superuser 또는 sudoer):
    • 일반 사용자 중에서 일시적으로 슈퍼 사용자의 권한을 얻을 수 있는 계정을 의미합니다.
    • sudo 명령어를 사용하여 특정 명령어나 작업을 슈퍼 사용자 권한으로 실행할 수 있습니다.
    • 필요한 경우, sudo 명령어를 사용하여 일시적으로 루트 권한을 얻을 수 있습니다.
  3. 루트 사용자 (Root User):
    • 시스템에서 최상위 권한을 가진 사용자로, 시스템의 모든 부분에 접근하고 모든 작업을 수행할 수 있습니다.
    • 일반적으로 시스템의 관리자 또는 슈퍼 사용자로서 시스템의 설정, 관리, 유지보수 등을 책임집니다.
    • 보안상의 이유로, 루트 계정으로 로그인하는 것은 권장되지 않으며, 슈퍼 사용자 계정을 통해 필요한 경우에만 루트 권한을 얻는 것이 일반적입니다.

요약하면, 루트 사용자는 시스템에서 모든 권한을 가지며, 슈퍼 사용자는 필요에 따라 일시적으로 슈퍼 사용자 권한을 얻을 수 있습니다. 그리고 일반 사용자는 보다 제한된 권한을 갖고 일반적인 사용자 작업을 수행합니다.

실습16: 183에서 quarto의 설치

  • which quarto
  • wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
cd ~

최상위 폴더

sudo dpkg -i quarto-1.4.533-linux-amd64.deb 
sudo dpkg -r quarto 

i는 install r은 remove

실습17: 183에서 아나콘다 설치

  • https://www.anaconda.com/download <- 여기서 다운받을 수 있는 주소 get 하세여
  • bash Anaconda3-2019.03-Linux-x86_64.sh

아나콘다와 git/quarto의 차이는?

실습18: 183에서 주피터랩 설치

  • conda create py310 python=3.10
  • conda activate py310
  • conda install -c conda-forge jupyterlab
  • conda install -c conda-forge notebook

- 접속하는 방법1

주피터 오픈 후

jupyter lab --ip="0.0.0.0" --port={8888}

http://127.0.0.1:1212/lab?token=b07f224ffe23a846b907c496234868acfb52bc381df8f4fd

->

http://210.117.173.183:1212/lab?token=b07f224ffe23a846b907c496234868acfb52bc381df8f4fd

ip 바꿔서 들어가면 됌

- 접속하는 방법2

  • jupyter notebook password

비밀번호 설정해서 들어가기

이번엔 ip 치고 들어가기

jupyter lab --ip="210.117.178.183" --port={8888}

실습19: 1일차 숙제 쉽게 하는 방법

https://guebin.github.io/IP2022/2022/03/28/(4주차)-3월28일.html

- 깃헙에서 홈페이지 만들경우 대응하는 레포지토리를 찾으면 쉽게 복사가능.

#!wget "https://raw.githubusercontent.com/guebin/IP2022/master/_notebooks/2022-03-28-(4%EC%A3%BC%EC%B0%A8)%203%EC%9B%9428%EC%9D%BC.ipynb"
!wget 주소 or !wget "주소"

실습20: 블로그 꾸미기

실습21: 이미지 그리기 (슈퍼유저)

- 방법1

!wget https://imgs.xkcd.com/comics/sandwich.png
--2024-01-03 14:08:48--  https://imgs.xkcd.com/comics/sandwich.png
Resolving imgs.xkcd.com (imgs.xkcd.com)... 146.75.48.67, 2a04:4e42:7c::67
Connecting to imgs.xkcd.com (imgs.xkcd.com)|146.75.48.67|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11828 (12K) [image/png]
Saving to: ‘sandwich.png’

sandwich.png        100%[===================>]  11.55K  --.-KB/s    in 0s      

2024-01-03 14:08:48 (69.3 MB/s) - ‘sandwich.png’ saved [11828/11828]
# ![](sandwich.png)

- 방법2

# ![](https://imgs.xkcd.com/comics/sandwich.png)

- 방법3: 스크린샷

실습22: 182 ssh차단 우회하기 (배운적X)

sudo vi /etc/ssh/sshd_config 

원래 기본으로 22번으로 인식해서 포트 번호 입력 안 해도 ssh로 들어갈 수 있었음.

위 코드에서 port 주석처리 풀어주고 포트 번호 지정해준 후

sudo systemctl restart ssh.service

하면 ssh 이름@0.0.0.0 -p 번호

로 들어갈 수 있음

실습23: 186 컴퓨터 접속

실습24: 186 ssh차단 우회하기 (배운적X)

실습25: 186 컴퓨터 개발환경 셋팅하기