Categories
Google

youtube-dl: 커맨드 라인에서 유튜브 동영상 다운로드하기

youtube-dl 을 설치하는 방법을 알아보자.

youtube-dl 사이트에서 실행 파일을 다운로드한다.

wget https://yt-dl.org/downloads/latest/youtube-dl

실행 파일을 /usr/local/bin 디렉토리로 이동시킨다.

sudo mv youtube-dl /usr/local/bin

실행 파일의 사용 권한을 변경한다. 모든 사용자가 읽고 실행할 수 있도록 한다.

sudo chmod a+rx /usr/local/bin/youtube-dl

우분투의 apt 명령으로 youtute-dl 패키지를 설치하는 방법도 있다.

sudo apt install youtube-dl

하지만 이 방법은 최신 버전이 설치되는 것을 보장하지 않는다.

youtube-dl 은 새로운 버전으로 수정될 때가 많다. 따라서 정기적인 업데이트는 필수이다. 업데이트 시에는 -U 옵션을 사용한다.

sudo youtube-dl -U

유튜브 동영상을 다운로드해 보자. 아래와 같이 동영상의 URL 을 프로그램의 인자값으로 지정한다.

youtube-dl https://www.youtube.com/watch?v=T8PZyXqp_KY

이 URL 은 웹브라우저의 주소창에 표시되는 것이다. 이것 대신에 좀더 간단한 URL 을 사용할 수도 있다.

youtube-dl https://youtu.be/T8PZyXqp_KY

다운로드한 동영상의 이름이 ‘동영상제목.확장자’ 형식이 되도록 해 보자.

youtube-dl -o ‘%(title)s.%(ext)s’ https://www.youtube.com/watch?v=T8PZyXqp_KY

여기서 %(title)s 와 %(ext)s 는 플레이스 홀더 (place holder) 이다. 동영상을 다운로드할 때 각각 동영상의 제목과 동영상의 확장자로 대체된다.

유튜브 동영상은 여러 가지 포맷으로 제공된다. 이중에서 원하는 것을 선택하여 다운로드할 수 있다.

동영상의 포맷 리스트를 출력해 보자.

youtube-dl -F https://www.youtube.com/watch?v=T8PZyXqp_KY

포맷 리스트의 맨 왼쪽에 포맷 코드가 있다. 포맷 코드를 지정하면 이것에 해당하는 동영상을 다운로드할 수 있다.

youtube-dl -f 299 https://www.youtube.com/watch?v=T8PZyXqp_KY

이 명령은 화면 해상도는 1920×1080 이고 확장자는 mp4 인 동영상 파일을 다운로드하게 된다.

포맷 리스트를 출력하는 옵션은 대문자 F 이고 포맷을 지정하는 옵션은 소문자 f 라는 점을 유의하자.

Categories
Internet

rTorrent: 커맨드 라인 토렌트 다운로드 프로그램

터미널 창에서 아래 명령으로 rTorrent 를 설치한다.

sudo apt install rtorrent

토렌트 파일을 다운로드하여 ~/Downloads 디렉토리에 저장해 두자. rTorrent 를 실행한다.

rtorrent

그러면 rTorrent 화면이 나타난다.

토렌트 파일을 선택해 보자. rTorrent 화면에서 엔터 키를 친다. 화면 맨 밑에 아래와 같은 프롬프트가 나타날 것이다.

load.normal>

이 프롬프트에 토렌트 파일의 경로를 입력한다. 경로를 전부 입력할 필요는 없다. 일부만 입력하고 탭 키를 치면 자동 완성되기 때문이다.

프롬프트에 아무 것도 입력하지 않은 상태에서 탭 키를 치면 현재 작업 디렉토리에 있는 파일의 리스트가 출력된다. 이 리스트를 보면서 경로를 입력한다.

파일 선택을 하지 않고 처음으로 돌아가려면 Esc 키를 친다.

sample.torrent 라는 토렌트 파일을 선택한다고 해 보자. 아래와 같이 입력하고 엔터 키를 친다.

load.normal> Downloads/sample.torrent

방금 선택한 토렌트가 화면에 나타날 것이다. 자동으로 다운로드가 시작되지는 않는다.

위쪽 화살표 키나 아래쪽 화살표 키를 이용하여 토렌트를 선택한다. 그러면 토렌트의 왼쪽에 별표 (*) 3개가 나타난다. 이 상태에서 Ctrl + S 키를 치면 다운로드가 시작된다.

다운로드가 시작되면 해당 토렌트의 다운로드 및 업로드 진행 상태가 표시된다. 다운로드가 완료되면 ‘done’ 이라고 표시된다.

다운로드가 진행 중일 때 Ctrl + D 키를 치면 다운로드가 중단된다. 이 상태에서 다시 Ctrl + D 키를 치면 토렌트가 삭제된다.

다운로드가 중단된 상태에서 Ctrl + S 키를 치면 다운로드가 다시 시작된다.

다시 엔터 키를 쳐서 load.normal> 프롬프트를 호출해 보자. 앞에서 설명한 방법에 따라 다른 토렌트를 추가해 보자. 원하는 개수 만큼 토렌트를 추가할 수 있다.

5 키를 쳐 보자. 그러면 화면에 다운로드가 완료된 토렌트만 표시될 것이다. 1 키를 치면 다시 모든 토렌트가 표시된다.

rTorrent 를 종료할 때는 Ctrl + Q 키를 치면 된다.

Categories
Computer Network

우분투에서 iptables 명령으로 인터넷 연결 공유하기

인터넷 연결 공유를 위해서는 게이트웨이 역할을 할 리눅스 컴퓨터가 하나 필요하다. 이 컴퓨터에는 랜카드가 2개 설치되어야 한다. 하나는 퍼블릭 IP 주소를 갖게 되고 다른 하나는 사설 IP 주소를 갖게 된다. 이 컴퓨터를 게이트웨이 서버라고 부르도록 하자.

게이트웨이 서버에서의 설정 방법을 알아보자.

인터넷 연결 공유를 위해서는 게이트웨이에서 IP 포워딩이 활성화되어야 한다.

sudo sysctl -w net.ipv4.ip_forward=1

이 명령에 의해서 IP 포워딩이 활성화될 것이다. 하지만 그 효과는 시스템을 재부팅하면 사라지게 된다.

이러한 문제를 해결하기 위해 /etc/sysctl.conf 파일을 수정한다.

sudo vi /etc/sysctl.conf

파일에서 아래와 같이 된 부분을 찾는다.

# net.ipv4.ip_forward = 0

이 부분을 아래와 같이 고친다.

net.ipv4.ip_forward = 1

인터넷 연결 공유는 NAT 설정을 통해 이루어진다. 우분투에서 NAT 설정을 하는 명령은 iptables 이다.

iptables 명령으로 FILTER 테이블과 NAT 테이블을 설정하는 방법을 알아보자.

FILTER 테이블의 모든 체인을 비운다.

sudo iptables -F

NAT 테이블의 모든 체인을 비운다.

sudo iptables -t nat -F

NAT 테이블에서 IP 매스커레이딩을 활성화한다.

iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE

여기서 enp3s0 은 퍼블릭 IP 주소를 갖는 랜카드의 인터페이스 이름이다. 독자는 자신의 네트워크 환경에 맞게 수정해서 입력해야 한다.

랜카드의 인터페이스 이름은 아래 명령으로 확인할 수 있다.

ip addr show

이상으로 게이트웨이에서의 설정을 마쳤다. 하지만 이런 식으로 여러 명령들을 매번 입력하는 것은 번거로운 일이다. 명령들을 하나의 스크립트 파일 안에 정리해 보자.

sudo vi /usr/local/bin/ics.sh

아래와 같은 내용을 입력하고 저장한다.

#!/bin/bash
sysctl -w net.ipv4.ip_forward=1
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE

모든 사용자가 이 파일을 실행할 수 있도록 한다.

sudo chmod a+x /usr/local/bin/ics.sh

시스템 부팅 후 아래 명령을 내리면 인터넷 연결 공유 기능이 활성화될 것이다.

sudo /usr/local/bin/ics.sh

이렇게 하는 것마저 귀찮다면 /etc/rc.local 파일을 이용하면 된다. ‘exit 0’ 부분을 찾아 그 앞에 아래 내용을 추가한다.

/usr/local/bin/ics.sh

그러면 시스템을 부팅할 때마다 해당 스크립트가 자동으로 실행될 것이다.

클라이언트 컴퓨터에서의 설정 방법을 알아보자.

인터넷에 직접 연결되어 있지 않은 다른 컴퓨터들은 게이트웨이 서버를 통해 인터넷에 연결하게 된다. 따라서 해당 컴퓨터들은 네트워크 설정을 할 때 2가지만 정확하게 입력하면 된다.

하나는 기본 게이트웨이의 주소이고 다른 하나는 DNS 서버의 주소이다.

기본 게이트웨이의 주소는 앞에서 설명한 게이트웨이 서버의 사설 IP 주소를 입력한다. 퍼블릭 IP 주소가 아니라는 점에 유의하자.

DNS 서버의 주소는 인터넷 서비스 제공 업체가 제공하는 DNS 서버의 주소를 입력한다. 구글의 퍼블릭 DNS 서버 주소 (8.8.8.8) 를 입력해도 된다.

Categories
Computer Network

우분투 리눅스에서 DHCP 서버를 설치하고 설정하기

우분투의 터미널 창에서 아래 명령으로 DHCP 서버를 설치한다.

sudo apt install isc-dhcp-server

설치가 끝났다면 DHCP 서버 설정(setup)을 해 보자. DHCP 서버의 설정 파일은 /etc/dhcp/dhcpd.conf 이다. 편집을 하기 전에 이 파일을 백업해 두자.

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

편집기로 파일을 연다.

sudo vi /etc/dhcp/dhcpd.conf

파일의 기존 내용을 모두 삭제한다. 그리고 아래와 같은 내용을 입력한다.

default-lease-time 600;    # IP 주소 임대 시간은 600초
max-lease-time 7200;    # IP 주소 최대 임대 시간은 2시간

subnet 192.168.0.0 netmask 255.255.255.0 {    # 네트워크 주소와 서브넷 마스크
  range 192.168.0.201 192.168.0.220;    # 임대할 IP 주소의 범위
  option routers 192.168.0.1;    # 게이트웨이 서버의 주소
  option domain-name-servers 210.220.163.82, 219.250.36.130;    # 도메인 네임 서버의 주소
  host static-ip {    # 특정 호스트에 고정 IP 주소를 할당하기 위한 부분
    hardware ethernet 68:14:02:82:12:28;    # 해당 호스트 랜카드의 MAC 주소
    fixed-address 192.168.0.221;    # 해당 호스트에 할당할 고정 IP 주소
  }
}

IP 주소 및 MAC 주소는 독자의 네트워크 환경에 맞게 수정해야 한다. 해시 (#) 기호 뒤에 있는 설명 부분은 입력할 필요가 없다.

fixed-address 192.168.0.221; 부분을 보자. 여기서 지정한 주소는 range 192.168.0.201 192.168.0.220; 부분의 범위에 포함되지 않는 것이어야 한다.

파일을 편집한 후 저장하고 편집기를 닫는다.

DHCP 서버를 재실행하여 설정한 내용을 적용한다.

sudo systemctl restart isc-dhcp-server

아래 명령은 DHCP 서버가 할당한 IP 주소의 리스트를 출력한다.

dhcp-lease-list

출력 결과를 /etc/dhcp/dhcpd.conf 파일에서 설정한 내용과 비교해 보자. 고정 IP 주소는 출력 결과에 포함되지 않는다.