2011. 8. 17. 11:45

wget을 사용하여 파일 다운로드

♧ 가끔 커맨드라인 명령어를 사용하여 원격 서버에서 파일 다운로드가 필요하다.

예를 들면, RPM 소프트웨어 패키지에 대한 링크를 찾을 수 있지만, 링크는 HTTP 바로 설치

RPM을 막기 위한 HTTP 리다이렉트를 몇 개 통과해야 한다.

혹은 매일 밤 로그 파일을 자동으로 다운로드하는 스크립트를 원할지 모른다.

 

wget 명령어는 웹 서버(HTTP 그리고 HTTPS)와 FTP 서버에서 파일을 다운받을 수 있다.

 

▶ wget 으로 이미지 파일 다운로드.

$ wget https://t1.daumcdn.net/cfile/tistory/133BD1594DFD44E33A

--2011-08-17 11:31:35-- https://t1.daumcdn.net/cfile/tistory/133BD1594DFD44E33A

Resolving cfile3.uf.tistory.com... 118.222.183.121

접속 cfile3.uf.tistory.com|118.222.183.121|:80... 접속됨.

HTTP request sent, awaiting response... 200 OK

Length: 21104 (21K) [image/png]

Saving to: `133BD1594DFD44E33AE5B6'

 

100%[==========================================>] 21,104 --.-K/s in 0.02s

 

2011-08-17 11:31:35 (1.31 MB/s) - `133BD1594DFD44E33AE5B6' saved [21104/21104]

 

▶ FTP 서버가 로그인과 패스워드가 필요할 때, wget 커맨드 사용 형식.

$ wget ftp://user:password@ftp.example.com/path/to/file

$ wget --user=user --password=password ftp://ftp.example.com/path/to/file

예를 들면 다음과 같다.

$ wget ftp://chris:mykuulpwd@ftp.linuxtoys.net/home/chris/image.jpg

$ wget --user=chris --password=mykuulpwd ftp.linuxtoys.net/home/chris/image.jpg

 

▶ wget으로 단일 웹페이지 다운.

$ wget http://www.wiley.com

웹페이지 다운로드

$ wget -p http://www.wiley.com

웹페이지와 요소들 다운

$ wget -pk http://www.wiley.com

페이지 다운로드와 로컬 파일 이름 사용

$ wget -pkK http://wiley.com

로컬 이름 변경, 원본 유지

$ wget -E http://www.aspexamples.com

다운로드 파일에 .html 추가

$ wget -m http://www.linuxtoys.net

타임스탬프를 추가하고 FTP 디렉토리 목록 유지

$ wget -mEkK http://www.linuxtoys.net

가장 쓸만한 복사본

$ wget -c http://example.com/DVD.iso

중단된 파일을 계속 이어서 다운로드

 
▶ 자주쓰는 예: wget -r -np -A.<확장자> -l <깊이지정> URL 

 

 

 

cURL을 사용하여 파일 전송

♧ URL의 애플리케이션(curl 명령어)을 위한 클라이언트는 웹 및 FTP 프로토콜을 사용하여 파일을

전송하기 위해 wget과 유사한 기능을 제공, 그러나 curl 명령어는 또한 SSH 프로토콜(SCP, SFTP),

LDAP, DICT, Telnet 그리고 File 등 다른 인기 있는 프로토콜을 사용하여 파일을 전송할 수 있다.

 

대용량 및 순환 다운로드(wget)를 지원하는 대신, curl은 싱글-샷 파일 전송을 위해 디자인되었다.

그러나 더 많은 프로토콜 및 일부 깔끔하고 고급스러운 기능을 지원.

 

▶대괄호'[]'를 사용하여 일치하는 문자 혹은 숫자 범위 지정하여 사용.

$ curl -O ftp://kernelorg.mirrors.tds.net/pub/linux/kernel/v1.0/patch[6-8].sign

▶중괄화'{}'를 사용하여 일치하는 문자 혹은 숫자를 지정하여 사용.

$ curl -OO ftp://kernelorg.mirrors.tds.net/pub/linux/kernel/v2.0/ChangeLog-2.6.{1,4}

▶서버의 유저이름과 패스워드, 파일다운로드(fileA)를 추가, 다운로드 완료시 파일 삭제

$ curl -O ftp://chris:MyPasswd@ftp.example.com/home/chris/fileA -Q '-DELE fileA'

▶FTP서버에 install.log 파일을 업로드(-T).

$ curl -T install.log ftp://chris:MyPasswd@ftp.example.com/tmp/ \

-Q "-RNFR install.log" -Q "-RNTO Xinstall.log

▶ftp.kernel.org/pub/ 디렉토리의 컨텐츠 목록을 curl로 알려줌.

$ curl ftp://ftp.kernel.org/pub// List /pub/ contents /pub/

 

 

Posted by devanix
2011. 8. 17. 11:01

♧ 텍스트 모드 웹 브라우저는 GUI를 사용할 수 없을 때 웹 서버가 동작중인지 혹은

웹 서버에서 정보를 얻어오는지를 체크하는데 빠른 방법을 제공한다.

한때 인기있었던 텍스트 기반 브라우저는 lynxlinks 브라우저로 대부분 리눅스 시스템에서

대체되었다가 나중에 elinks로 교체되었다.

 

elinks는 여러 색상을 지원하기 때문에, 테미널에서 사용하는 만큼 여러 색상을 지원하며,

텍스트를 링크와 머리글로 사용하기가 용이하다.

 

 

▶ elinks 명령어 실행

$ elinks

파일 이름 혹은 URL의 프롬프트

$ elinks devanix.tistory.com

요청한 파일 이름 혹은 URL 요청

 

elinks 사용을 위한 컨트롤 키

설명

Esc(or F9/F8)

토글 메뉴 켜고 닫음

아래쪽 화살표 (↓)

다음 페이지에 링크 또는 편집 필드로 이동

위쪽 화살표 (↑)

이전 페이지에 링크 또는 편집 필드로 이동

오른쪽 화살표 (→, or Enter)

강조된 링크 앞으로 이동. 강조 양식 필드에 텍스트 입력

왼쪽 화살표 (←)

다시 이전 페이지로 이동

/

검색 전달

?

반대로 검색

n

다음 찾기

N

이전 찾기

PageUp

한 페이지 스크롤

PageDown

한 페이지를 아래로 스크롤

g

URL로 이동

=

페이지 정보를 보여줌

Crtl+r

페이지 새로고침

a

현재 페이지를 즐겨찾기

t

새로운 브라우저 탭 열기

>

다음 탭으로 이동

<

이전 탭으로 이동

c

현재 탭을 닫음

d

현재 링크 다운로드

D

다운로드 보기

A

현재 링크 즐겨찾기에 추가

s

즐겨찾기 보기

v

현재 이미지 보기

h

전역 히스토리 매니저 보기

q (or Ctrl+c)

elinks 종료

 

/etc/elinks.conf에 elinks 전역 설정을 추가할 수 있다.

☞ 각 유저들의 설정은 각 유저의 $HOME/.elinks 디렉토리에 저장.

☞ 사용할 수 있는 설정을 보려면 man elinkskeys

 

Posted by devanix
2011. 8. 17. 04:04

♧ 네트워크 문제 해결은 일반적으로 하단 레이어에서 이루어진다.

 

호스트 연결 체크

♧ 링크와 듀플렉스가 불일치가 아니라는 것을 알 때, 다음 단계는 기본 게이트웨이로 ping을 한다.

/etc/network/interfaces 파일로 기본 게이트웨이(gw)를 구성하거나 시스템을 DHCP 같은 서비스로

기본 게이트웨이를 설정한다.

 

▶ 실제 라우팅 테이블의 기본 게이트웨이를 점검

$ ip route

192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.4 metric 1

169.254.0.0/16 dev eth0 scope link metric 1000

default via 192.168.0.1 dev eth0 proto static

☞ 위 예에서 기본 라우트를 위한 게이트웨이는 192.168.0.1 이다.

 

▶ ping 명령을 사용하여 게이트웨이의 IP접속을 확인

$ ping 192.168.0.1

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=2.01 ms

64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.514 ms

64 bytes from 192.168.0.1: icmp_req=3 ttl=64 time=0.521 ms

64 bytes from 192.168.0.1: icmp_req=4 ttl=64 time=0.518 ms

 

--- 192.168.0.1 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3001ms

rtt min/avg/max/mdev = 0.514/0.890/2.010/0.647 ms

 

◎ ping 옵션

$ ping -a 192.168.0.1

ping 프로그레스에 audible ping 추가

$ ping -c 4 192.168.0.1

4번 ping 하고 종료

$ ping -q -c 5 192.168.0.1

ping 요약을 보여줌

$ sudo ping -f 192.168.0.1

ping의 흐름을 전송(root)

$ ping -i 3 192.168.0.1

3초 간격으로 패킷 전송

$ sudo ping -I eth0 192.168.0.1

eth0 설정(여러 가지 NICs를 사용하는 경우)

$ sudo ping -s 1500 192.168.0.1

1500 byte로 패킷 사이즈 설정

☞ 기본적으로 ping은 작은 패킷(56 byte)을 전송.

 

 

 

 

Address Resolution Protocol(ARP) 체크

♧ 게이트웨이에 ping을 할 수 없다면, 이더넷 MAC 레이어를 의심할 것이다.

Address Resolution Protocol(ARP)은 MAC 레이어 정보를 발견하는데 사용할 수 있다.

 

▶ 호스트 네임으로 ARP 캐시의 컴퓨터 목록 arp를 출력.

$ arp -v

이름 항목의 ARP 캐시 목록

$ arp -vn

IP 어드레스 항목의 ARP 캐시 목록

$ sudo arp -d 192.168.0.4

ARP 캐시에서 192.168.0.4 주소 삭제

$ sudo arp -s 192.168.0.4 00:0B:6A:02:EC:95

ARP에 IP와 MAC 어드레스 추가

 

arping명령을 사용하여 사용중인 IP를 보려고 서브넷 쿼리.

$ arping 192.168.0.50

사용중인 192.168.0.50을 보려고 서브넷 쿼리

$ arping -f 192.168.0.50

192.168.0.50 쿼리하고 첫 번째 응답에 멈춤

$ arping -c 2 192.168.0.50

해당주소를 쿼리하고 2회에 멈춤

 

 

 

 

호스트 경로 추적

♧ 게이트웨이 ping할 수 있고 심지어 네트워크 밖에 있는 컴퓨터에도 도달하는지 확인 후,

여전히 특정 호스트 혹은 네트워크에 도달하는데 문제를 가지고 있다면, 병목 혹은 실패지점을 발견하려고 traceroute를 사용할 수 있다.

 

$ traceroute boost.turbosphere.com

traceroute to boost.turbosphere.com (66.113.99.70), 30 hops max, 60 byte packets

6 203.248.238.37 (203.248.238.37) 4.497 ms 1.159 ms 3.815 ms

7 203.233.117.153 (203.233.117.153) 3.823 ms 3.841 ms 210.120.61.93 …

8 61.42.202.93 (61.42.202.93) 4.281 ms 4.353 ms 4.264 ms

9 210.120.105.145 (210.120.105.145) 3.770 ms 3.786 ms 3.804 ms

 

추적 끝에 애스터리스크(*) 라인은 그 대상의 트래픽을 차단하여 방화벽으로 인해 발생한다.

그러나 목적지 전에 몇 개의 애스터리스크(*)를 본다면, 무거운 혼잡, 장비 실패와 병목지점을 나타낼 수 있다.

 

기본적으로, traceroute는 ICMP보다 더 현실적인 성능 UDP패킷을 사용한다.

그 때문에 일부 인터넷 홉은 ICMP트래픽에 낮은 우선순위를 준다.

ICMP패킷을 사용하여 추적하는 경우가 여전히 같다면, 다음과 같이 명령어를 시도.

$ traceroute -I boost.turbosphere.com

ICMP 패킷을 사용하여 경로 추적

$ traceroute -p 25 boost.turbosphere.com

25번 포트 접속하여 추적

$ traceroute -n boost.turbosphere.com

name resolution을 해제하여 추적

☞ 대안으로 tracepath 명령으로 UDP를 추적하는데 사용 : $ tracepath boost.turbosphere.com

 

커널 라우팅 테이블을 보고 조작하려면, route 명령어를 사용.

 

▶ route 명령어를 사용하여 로컬 라우팅 테이블 표시

$ route

로컬 라우팅 테이블 정보 표시

Kernel IP routing table

Destination     Gateway         Genmask            Flags   Metric Ref    Use Iface

192.168.0.0     *                       255.255.255.0   U          1          0        0 eth0

link-local          *                       255.255.0.0        U          1000   0        0 eth0

default             192.168.0.1     0.0.0.0                UG        0          0        0 eth0

$ route -n

DNS 검색 없이 라우팅 테이블 표시

 

▷ gw 옵션을 사용하여 기본 게이트웨이를 추가

$ sudo route add default gw 192.168.0.1

기본 게이트웨이 192.168.0.1 추가

▷ 새로운 라우트 추가.

$ sudo route add -net 192.168.0.0 netmask 255.2855.255.0 eth0

$ sudo route add -net 192.168.0.0 netmask 255.2855.255.0 gw 10.0.0.100

▷ 라우트 삭제.

$ sudo route del -net 192.168.0.0 netmask 255.255.255.0

 

새로운 ip 명령어를 사용하면, route 명령어에서 보여줬던 것처럼 똑같이 할 수 있다.

▶ 같은 기본 라우팅 정보를 보여주는 세가지 다른 방법.

$ ip route show

기본 라우팅 정보 표시

192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.4 metric 1

169.254.0.0/16 dev eth0 scope link metric 1000

default via 192.168.0.1 dev eth0 proto static

$ ip route

기본 라우팅 표시 (예 #2)

$ ip r

기본 라우팅 표시 (예 #3)

▶ ip로 라우트를 삭제하고 추가

$ sudo ip r add 192.168.0.0/24 via 10.0.0.100 dev eth0

인터페이스 라우트 추가

$ sudo ip r add 192.168.0.0/24 via 10.0.0.100

인터페이스 없이 라우트 추가

$ sudo ip r del 192.168.0.0/24

라우트 삭제

 

영구적인 새로운 라우트를 만들려면, /etc/network/interfaces 파일을 편집하고 그 파일에 새로운

라우트 정보를 배치하라. 위의 ip 명령어는 라우트를 추가하고 add, /etc/network/interfaces

다음과 같은 라인을 추가.

iface eth0 inet static

address 192.168.0.0

netmask 255.255.255.0

gateway 10.0.0.100

 

 

 

 

netstat 연결 및 통계 표시

♧ 앞의 툴은 네트워크 레이어(레이어 3)에서 대부분 네트워크 문제가 커버되었다.

패킷에 관한 정보를 표시하기 위해 전송-레이어 프로토콜과 ICMP 사이로 전송하려면,

netstat 명령어 사용.

$ netstat -s | less

활성화된 TCP, ICMP, UDP 요약을 보여줌

$ sudo netstat -tanp

활성화된 TCP 연결을 보여줌

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 786/mysqld

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 374/sshd

tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1097/cupsd

$ sudo netstat -uanp

활성화된 UDP 연결 보기

☞ netstat 데몬 범위에서 TCP 포트까지 출력을 좁히려면, listen 단어 검색

$ sudo netstat -tanp | grep -i listen

 

 

 

 

기타 네트워크 툴 (tcpdump, nmap)

♧ 시스템에서 송신, 수신 패킷의 헤더 정보를 보길 원한다면, tcpdump를 사용.

tcpdump 명령어는 haystack의 패킷 안에 needle을 찾고 필터링을 선회하는 고급 기능이 많이 있다.

원격시스템에서 tcpdump를 실행한다면, 화면 클라이언트와 원격시스템 사이의

모든 ssh 트래픽이 넘쳐날 것이다.

 

tcpdump 필터링이 어떻게 작동 되는지 많이 배울 필요없이 시작

$ sudo tcpdump | grep -v ssh

ssh와 연관된 것을 제외하고 패킷을 찾음

 

▶ nmap로 기본적인 호스트를 스캔

$ sudo nmap 10.0.0.1

컴퓨터의 10.0.0.1 포트 스캔

$ sudo nmap -vv 10.0.0.1

nmap 출력에서 최대 다변을 보여줌

$ sudo nmap -vv -sP 10.0.0.0/24

전체 너트워크의 호스트 스캔

$ sudo nmap -vv -P0 -O -p 100-200 10.0.0.1

ping 없이, OS fingerpint, 100-200포트 ping

 

 

Posted by devanix