linux 에서 스크립트 실행할 때
/bin/sh^M: bad interpreter: No such file or directory
와 같은 에러 메시지가 나타날 때가 있다.

이것은 십중 팔구 윈도우에서 스크립트 파일을 만든 뒤, linux 에서 실행했기 때문에 나타나는 오류이다.
정확히는 줄 끝 (줄바꿈)을 의미하는 개행문자가 달라서 발생하는 문제인데 이것의 해결을 위해서는 다음의 방법 중 한 가지로 처리한다.

1. vi -b
vi 의 바이너리 모드로 들어가면 ^M 이라는 문자가 보인다. 이것을 지워주면 된다.

2. dos2unix
linux 콘솔에서 dos2unix filename.txt 와 같이 명령을 주어 파일을 변경한다.

3. subversion property 설정
형상관리 시스템으로 subversion을 쓰고 있을 경우, 해당 스크립트 파일의 property 에 svn:eol-style=native 를 추가해 준다.
(native 는 줄 끝 문자를 해당 OS에 맞게 변경해준다)


출처 : http://tod2.tistory.com/28


아래 명령어를 이용하면 확인이 가능함.

1. HDD의 경우

cat /sys/block/sda/queue/rotational 명령을 실행한 결과가 1

2. SSD의 경우

cat /sys/block/sda/queue/rotational 명령을 실행한 결과가 0

커널 2.6.29 이상부터 가능.


mount된 디렉토리를 umount 하고자 할 때, 만약 특정 사용자 & 프로세스가 해당 디렉토리를 사용하고 있으면

"device is busy" 메세지가 발생하며 umount 가 되지 않습니다.

이 경우 umount를 위해 해당 프로세스를 강제로 kill 하는 방법은 아래와 같습니다.

# fuser -ck 마운트디렉토리

ex) fuser -ck /backup

위 명령으로 프로세스를 kill 하고 umount를 재시도하면 정상적으로 mount가 해제 됩니다.

* 해당 디렉토리를 사용하는 사용자가 누구인지 확인하고 싶을 때
# fuser -cu /backup

출처 : http://faq.hostway.co.kr/Linux_ETC/4209


 

yum 패키지 관리자는 패키지 설치/삭제를 트랜잭션으로 관리하므로 예전 패키지 설치 상태로 되돌릴 수 있는 방법을 제공하고 있습니다.


yum 을 통해 패키지 설치, 변경, 삭제로 인해 내부 저장소가 변경되는 작업을 트랜잭션(transaction)이라고 하며 CentOS 6 에 내장된 yum 부터는 트랜잭션 내역을 확인하고 rollback 을 할 수 있습니다. 


트랜잭션 목록 보기

yum history 명령을 옵션없이 실행하거나 옵션에 list 를 주면 최근 트랜잭션 목록을 볼 수 있습니다.

# yum history list


ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
24 | lesstif <lesstif> | 2017-07-12 12:02 | Install | 5
23 | lesstif <lesstif> | 2017-06-28 11:38 | Install | 1
22 | lesstif <lesstif> | 2017-06-28 11:11 | Install | 15
21 | lesstif <lesstif> | 2017-06-28 11:11 | Erase | 6 EE
20 | lesstif <lesstif> | 2017-06-28 10:57 | Install | 1 EE
19 | lesstif <lesstif> | 2017-06-28 10:57 | Install | 1
18 | lesstif <lesstif> | 2017-06-19 09:30 | Install | 6
17 | lesstif <lesstif> | 2017-06-19 09:21 | I, O, U | 255 EE
16 | lesstif <lesstif> | 2017-06-19 09:18 | Install | 1
15 | lesstif <lesstif> | 2017-06-19 09:16 | I, U | 8
14 | root <root> | 2015-01-30 04:12 | Install | 3

yum history list 실행 결과

ID는 트랜잭션 번호를 의미하며 수차적이므로 총 24번의 트랜잭션이 있었음을 나타내며 Action 은 실행한 행동이며 Altered 는 트랜잭션에 의해 변경된 패키지의 갯수를 나타냅니다.


이력에 표시되는 모든 Action 항목은 아래 표에 있으며 여러 개의 Action 이 있었을 경우 I,U 같이 축약어로 표시됩니다.

Action
축약어
의미
Downgrade D 최소 한개의 패키지가 예전 버전으로 다운그레이드됨.
Erase E 최소 한개의 패키지가 삭제됨.
Install I 최소 한 개의 패키지가 설치됨.
Obsoleting O 최소 한개의 패키지가 obsolete 로 표시됨.
Reinstall R 최소 한개의패키지가 재설치됨.
Update U 최소 한개의 패키지가 새로운 버전으로 업데이트됨.
가능한 Action

Altered 필드는 변경된 패키지의 숫자와 변경 내역에 대한 기호가 표시되며 각 기호의 의미는 다음과 같습니다.

기호
의미
< 트랜잭션이 완료되기 전에 rpmdb 데이타베이스가 yum 이 아닌 외부에서 변경됨.
> 트랜잭션이 완료된 후에 rpmdb 데이타베이스가 yum 이 아닌 외부에서 변경됨.
* 트랜잭션을 종료하지 못함
# 트랜잭션이 성공적으로 종료되었지만 yum 이 0 아닌 종료 코드를 전달함.
E 트랜잭션이 성공적으로 종료되었지만 에러나 워닝이 표시됨.
P 트랜잭션이 성공적으로 종료되었지만 rpmdb 데이타베이스에 문제가 계속 존재함.
s

트랜잭션이 성공적으로 종료되었지만 --skip-broken 옵션을 사용하였으므로 어떤 패키지는 건너뜀.

Alteted 필드 의미

ID 가 24 번인 트랜잭션의 경우 Acton 이 Install 이고 Altered 항목이 5 이므로 5개의 패키지를 설치했다는 뜻입니다.

ID 가 21인 작업의 경우는 6개의 패키지를 삭제했다는 로그이며 17번인 트랜잭션은 I, O, U 이므로 설치와 업데이트를 했고 몇몇 패키지는 이제는 불필요(Obsolete)해졌다는 의미입니다.


자세한 정보 보기

해당 트랜잭션의 자세한 정보를 보고 싶으면  info 명령어 뒤에 트랜잭션 id 를 적어주면 되며  독자들도 사용하고 있는 리눅스 시스템의 트랜잭션 목록에서 상세 작업 이력을 확인해 보기 바랍니다.

아래는 22 번 트랜잭션의 상세 내용을 보는 예제입니다.

yum history info 22


Transaction ID : 22
Begin time : Wed Jun 28 11:11:52 2017
Begin rpmdb : 378:16ce599ad759e8435336997b266340324c5b0671
End time : 11:11:55 2017 (3 seconds)
End rpmdb : 393:3035f14323d91e76579575a07b6b2c04986f7800
User : lesstif <lesstif>
Return-Code : Success


Command Line : install php70w-cli php70w-common php70w-gd php70w-mbstring php70w-mysqlnd php70w-pdo php70w-fpm php70w-xml


Transaction performed with:
Installed rpm-4.11.3-21.el7.x86_64 @base
Installed yum-3.4.3-150.el7.centos.noarch @base


Packages Altered:
Dep-Install libX11-1.6.3-3.el7.x86_64 @base
Dep-Install libX11-common-1.6.3-3.el7.noarch @base
Dep-Install libXau-1.0.8-2.1.el7.x86_64 @base
Dep-Install libXpm-3.5.11-3.el7.x86_64 @base
Dep-Install libjpeg-turbo-1.2.90-5.el7.x86_64 @base
Dep-Install libpng-2:1.5.13-7.el7_2.x86_64 @base
Dep-Install libxcb-1.11-4.el7.x86_64 @base
Install php70w-cli-7.0.20-1.w7.x86_64 @webtatic

강조한 부분처럼 해당 트랜잭션으로 실행한 명령어 및 변경된 패키지의 자세한 정보를 알수 있습니다.


되돌리기(Undo)

"history undo ID" 명령어로 특정 트랜잭션을 되돌릴 수 있으며 되돌리기 작업은 수행한 트랜잭션을 이전 상태로 되돌리는 것이므로 작업한 내용과 반대의 작업을 수행하게 됩니다.


즉 트랜잭션이 패키지 설치라면 해당 트랜잭션에서 설치된 패키지는 삭제되고 트랜잭션이 패키지 삭제라면 삭제한 패키지는 설치됩니다.

되돌리기도 새로운 트랜잭션이므로 성공적으로 종료되었을 경우 별도의 트랜잭션 ID 를 갖게 되므로 전체 트랜잭션 ID 는 1 이 증가됩니다.

독자들도 수행한 트랜잭션중에 하나를 골라서 되돌리기 작업을 수행해 보기 바랍니다.


다음은 필자의 리눅스 시스템의 마지막 트랜잭션(ID: 24)을 되돌리는 예제입니다.

yum history undo 24


되살리기(Redo)

"yum history redo ID" 명령어로 특정 트랜잭션을 되살릴 수 있습니다.

위에서 24번 트랜잭션으로 5개가 설치되고 트랜잭션 되돌리기로 삭제되었습니다. 이제 24번 트랜잭션에서 설치한 패키지를 재설치하려면 "yum history redo 24" 명령어로 24번 트랜잭션을 되살릴 수 있습니다.

이 작업은 25번 트랜잭션을 되돌리는 "yum history undo 25" 번과 비슷한 결과를 가져오게 됩니다.

 

출처 : https://www.lesstif.com/pages/viewpage.action?pageId=43844113

'Works > CentOS & RockyLinux' 카테고리의 다른 글

디스크가 HDD인지 SSD인지 확인하기  (0) 2018.10.24
강제 umount 방법 (umount : device is busy 발생시)  (0) 2018.10.22
CentOS7 Locale설정  (0) 2018.05.29
SFTP log 설정  (0) 2018.02.22
dig 개념 및 사용법  (0) 2017.11.01


 

CentOS 7 에서 로케일 변경하는 방법입니다.


현재 사용가능한 한글관련 로케일


# localectl list-locales | grep -i ko

ko_KR

ko_KR.euckr

ko_KR.utf8

kok_IN

kok_IN.utf8

korean

korean.euc

ru_RU.koi8r

ru_UA.koi8u

tg_TJ.koi8t

uk_UA.koi8u

utf8 로 변경


 # localectl set-locale LANG=ko_KR.utf8

수동으로 변경시는 /etc/locale.conf 파일을 만들어 아래 내용 추가


LANG=ko_KR.utf8

서버 부팅 후 로케일 설정 확인


# locale

LANG=ko_KR.utf8

LC_CTYPE="ko_KR.utf8"

LC_NUMERIC="ko_KR.utf8"

LC_TIME="ko_KR.utf8"

LC_COLLATE="ko_KR.utf8"

LC_MONETARY="ko_KR.utf8"

LC_MESSAGES="ko_KR.utf8"

LC_PAPER="ko_KR.utf8"

LC_NAME="ko_KR.utf8"

LC_ADDRESS="ko_KR.utf8"

LC_TELEPHONE="ko_KR.utf8"

LC_MEASUREMENT="ko_KR.utf8"

LC_IDENTIFICATION="ko_KR.utf8"

LC_ALL= 


# cat /etc/locale.conf



출처: http://itposting.tistory.com/62 [IT 관련 포스팅]

'Works > CentOS & RockyLinux' 카테고리의 다른 글

강제 umount 방법 (umount : device is busy 발생시)  (0) 2018.10.22
yum 트랜잭션 및 롤백  (0) 2018.09.07
SFTP log 설정  (0) 2018.02.22
dig 개념 및 사용법  (0) 2017.11.01
크론테이블에 등록 : crontab -e  (0) 2017.09.22


* 설치 환경 : CentOS 6.x (64bit)

기본적으로 sftp는 로그를 남기지 않아 불편한 점이 종종 있는데 sftp 에 로그를 남기기 위해서는

아래와 같은 설정이 필요하다.


1. sshd_config 수정

vi /etc/ssh/sshd_config

Subsystem       sftp    /usr/libexec/openssh/sftp-server  를
Subsystem       sftp    /usr/libexec/openssh/sftp-server -f local2 -l INFO  로 변경


2. syslog.conf 수정 (CentOS 6.x 에서는 rsyslog.conf)

vi /etc/rsyslog.conf  파일에 아래 내용 추가

# sftp log
local2.*                        /var/log/sftp.log


3. logrotate.d 설정

vi /etc/logrotate.d/syslog 파일 내용 중

/var/log/spooler 하단에
/var/log/sftp.log
추가


4. 서비스 재시작

/etc/init.d/sshd restart
/etc/init.d/rsyslog restart


5. 확인

tail -f /var/log/sftp.log

'Works > CentOS & RockyLinux' 카테고리의 다른 글

yum 트랜잭션 및 롤백  (0) 2018.09.07
CentOS7 Locale설정  (0) 2018.05.29
dig 개념 및 사용법  (0) 2017.11.01
크론테이블에 등록 : crontab -e  (0) 2017.09.22
centos7 고정 ip 설정  (0) 2017.09.13


dig (domain information groper) 는 DNS 네임서버에 쿼리를 날리기위한 유용한 툴이다.
DNS lookup 과 쿼리를 보낸 네임서버로부터 돌아오는 응답을 출력해준다.

대부분의 DNS 관리자들은 DNS장애 시 troubleshoot 를 위해 dig를 사용한다.
이유는 dig의 유연하고 편리하기 때문이다.

보통 dig는 명령어라인 인자들과 함께 사용한다.

dig 사용 시 name server 를 명시하지 않으면 /etc/resolv.conf 파일에 명시된
리스트로 쿼리를 보낸다.

사용법은 다음과 같다.

dig @server name type

[server]
네임서버의 아이피 또는 도메인을 명시한다.
IPv4는 dotted-decimal(.)을 사용하고 IPv6는 colon-delimited(:)을 사용한다.

[name]
도메인을 명시한다.

[type]
ANY, A, MX, SIG, 기타.. 를 명시한다.
명시하지 않을 경우 기본적으로 A레코드를 출력한다.

< 예제 >

// 도메인 조회
[root@assa root]# dig @168.126.63.1 sysadm.kr ANY

; <<>> DiG 9.2.1 <<>> @168.126.63.1 sysadm.kr ANY
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65437
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;domain.net. IN ANY

;; ANSWER SECTION:
domain.net. 172800 IN NS ns.domain.net.

;; AUTHORITY SECTION:
domain.net. 172800 IN NS ns.domain.net.

;; ADDITIONAL SECTION:
ns.domain.net. 172800 IN A 192.168.1.100

;; Query time: 3080 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Sat Mar 29 11:01:07 2003
;; MSG SIZE rcvd: 134

// Reverse lookup(역방향 조회)
[root@assa root]# dig @168.126.63.1 -x 192.168.10.1 ANY
; <<>> DiG 9.2.1 <<>> @168.126.63.1 -x 192.168.10.1 ANY
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61892
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;1.10.168.192.in-addr.arpa. IN ANY

;; AUTHORITY SECTION:
1.10.168.192.in-addr.arpa. 600 IN SOA ns.domain.net. root.ns.domain.net. 2003021922 28800 14400 3600000 86400 



. server : 확인하고자 하는 DNS 서버의 domain 이나 IP 를 넣어주면 됨
2. query type 에 올수 있는것
– a – 네트워크 주소를 의미
– any – 지정한 도메인의 모든 정보를 의미
– mx – 지정한 도메인의 메일서버 정보를 의미
– ns – 네임서버를 의미
– soa – soa 정보를 의미
– hihfo – HINFO 레코드에 대한 정보를 의미

3. query-class : 확인하고자 하는 도메인

4. DIG는 쿼리에 대한 결과를 ANSWER SECTION에, 해당 도메인의 인증을 갖는 네임서버 정보를 AUTHORITY SECTION에, 그리고, 글루레코드 등이 있을 경우 그에대한 정보를 ADDITIONAL SECTION에 출력하여 준다.

출처 : http://sasuke.tistory.com/162?srchid=BR1http%3A%2F%2Fsasuke.tistory.com%2F162

'Works > CentOS & RockyLinux' 카테고리의 다른 글

CentOS7 Locale설정  (0) 2018.05.29
SFTP log 설정  (0) 2018.02.22
크론테이블에 등록 : crontab -e  (0) 2017.09.22
centos7 고정 ip 설정  (0) 2017.09.13
리눅스에서 tcpdump 명령어의 옵션 정리  (0) 2017.06.20


크론테이블에 등록 : crontab -e
■ cron

- 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의 crontab 화일을 만들어 cron job을 지정할 수 있다
- cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon 형태로 수행된다


■ 형식 : crontab -e

분  시  일  월  요일   실행할 명령

   분 : 0-59
   시 : 0-23
   일 : 1-31
   월 : 1-12
   요일 : 0-6( 0: 일요일)


■ 옵션

crontab -e : 작업할 내용 작성하기
crontab -l : 현재 설정되어 있는 작업내용 보기
crontab -r : 설정되어 있는 작업을 모두 삭제하기


■ 예제

ex1) 1일부터 15일 까지로 날짜를 지정하고 싶을 땐 다음과 같이 하이픈을 이용할 수 있다
0   1   1-15     *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex2) 1일과 7일 15일에 cron을 작동시킬 땐 콤마를 이용하면 된다
0   1  1,7,15    *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex3) 매 5일 마다 실행하고 싶을 땐 슬래쉬(/)를 이용한면 된다
0   1   /5   *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다
/ 안해줘도 달이 *로 표현되어 있어서 매달 실행된다. 하지만 좋은 습관을 들이기 위해..


 

ex4) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업
15 3 * * 0 find /var -name core 2>/dev/null |  xargs rm -f


ex5) 매월 1일 오후 6시에 시스템 down message 보내기
0 18 1 * * wall "System Will be down"


■ Access 제한

- /etc/cron.d/cron.allow 파일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템 관리자는 각 사용자별로 crontab 파일에 대한 Access 권한을 제한 할 수 있다
 * crontab을 access 할 수 있는 사용자

   - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 파일 안에 지정된 사용자
   - /etc/cron.d/cron.allow 화일이 없는 경우 : /etc/cron.d/cron.deny 파일 안에 지정되지 않은 사용자
       
 * crontab을 access 할 수 없는 사용자

   - /etc/cron.d/cron.allow 파일이 존재하는 경우 : 그 파일 않에 지정되지 않은 사용자
   - /etc/cron.d/cron.allow 파일이 없는 경우 : /etc/cron.d/cron.deny 파일에 지정된 사용자
   - /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 파일이 모두 없는 경우 : root를 제외한 모든 사용자
  
- OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의 사용자들이 지정된다
daemon
bin
smtp
nuucp
listen
nobody
noaccess

/etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때는 위와 같이 한줄에 한명씩 사용자를 지정한다.


0 4 1,10 * * 명령1

위 처럼 crontab을 편집하면 매월 1일과 10일 4시에 명령1을 실행한다는 의미이다. 또
0 4 1-10 * * 명령2

위처럼 crontab을 편집하면 매월 1일부터 10일동안 매일 명령2를 실행한다는 의미이다. 그리고

0 4 */5 * * 명령3

라고 편집하면 매 5일마다 실행한다는 것으로 1일, 6일, 11일 등과 같이 5일 간격으로 실행한다는 의미이다.
그리고 그 외에 root 권한으로 다른 사용자의 crontab 파일을 편집하기 위해서는 다음과 같이 명령하면 된다.

crontab -u user -e
[출처] Cron|작성자 지우개



출처: http://annehouse.tistory.com/390 [초록지붕의 앤]

'Works > CentOS & RockyLinux' 카테고리의 다른 글

SFTP log 설정  (0) 2018.02.22
dig 개념 및 사용법  (0) 2017.11.01
centos7 고정 ip 설정  (0) 2017.09.13
리눅스에서 tcpdump 명령어의 옵션 정리  (0) 2017.06.20
유용한 find 명령어 응용모음.  (0) 2017.06.09


 

centos 7 고정 ip 


/etc/sysconfig/network-scripts/ifcfg-xxxxx 파일

############# dhcp-config ############

#TYPE=Ethernet

#BOOTPROTO=dhcp

#DEFROUTE=yes

#PEERDNS=yes

#PEERROUTES=yes

#IPV4_FAILURE_FATAL=no

#IPV6INIT=yes

#IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

#IPV6_FAILURE_FATAL=no

#NAME=eno16777736

#UUID=d41562bc-ed43-4426-b395-e519468318a1

#DEVICE=eno16777736

#ONBOOT=yes


############### static-config #######

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=eno16777736

UUID=xxxxxxxxxxxxxxxxxxxxxxxxxx

DEVICE=eno16777736

ONBOOT=yes

IPADDR=192.168.233.xxx

NETMASK=255.255.255.0

GATEWAY=xxx.xxx.xxx.x

DNS1=168.126.63.1

DNS2=8.8.8.8

USERCTL=no

NM_CONTROLLED=yes




HWADDR=xx:xx:xx:xx:xx:xx : 맥주소 입력

TYPE= Ethernet : 이더넷 인터페이스의 종류

BOOTPROTO=static : ip할당 방식

static : 고정 아이피 할당

dhcp : 유동 아이피 할당

bootp : dhcp 이전에 사용하던 방식

none : 사용안함

DEFROUTE=yes : 디폴트라우트 사용 여부

PEERDNS=yes : dhcp 서버의 dns정보를 /etc/resolv.conf에 저장 여부

PEERROUTES=yes : dhcp 서버의 라우터 정보를 /etc/sysconfig/network에 저장 여부

IPV4_FAILURE_FATAL=yes : 설정이 잘 안됬을 때 IPv6 사용 여부(yes면 사용하지 않고 no면 사용)

IPV6INIT=yes : IPv6 사용 여부

NAME=enp0s3 : GUI 네트워크 설정 때 보이는 NIC 이름

ONBOOT=yes : 부팅시 자동 활성화 여부

BROADCAST= : 브로드캐스트 주소

IPADDR= : 아이피주소

NETMASK= : 넷마스크 주소

NETWORK= : 네트워크 주소

GATEWAY= : 게이트웨이 주소

DNS1= : DNS주소

DNS2= : DNS주소

USERCTL=no : 일반 사용자가 수정 할 수 있는지에 대한 여부

NM_CONTROLLED=yes : 네트워크 관리도구사용 여부



출처: http://flyyunha.tistory.com/entry/centos7-고정-ip-설정 [Get your Dream]


tcpdump 명령어 사용법



ㅁ 기본 옵션들


# tcpdump [ -AdDefIKlLnNOpqRStuUvxX ][ -B buffer_size ][ -c count ][ -C file_size ][ -G rotate_seconds ][ -F file ][ -i interface ][ -m module ][ -M secret ][ -r file ][ -s snaplen ][ -T type ][ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ][ -z postrotate-command ][ -Z user ]


ㅁ 각종 예제


# tcpdump -i eth0 => 인터페이스 eth0 을 보여줌

# tcpdump -w tcpdump.log => 결과를 파일로 저장, txt 가 아닌 bin 형식으로 저장됨

# tcpdump -r tcpdump.log => 저장한 파일을 읽음

# tcpdump -i eth0 -c 10 => 카운터 10개만 보여줌

# tcpdump -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줌

# tcpdump -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줌

# tcpdump -i eth0 src 192.168.0.1 => source ip 가 이것인 패킷 보여줌

# tcpdump -i eth0 dst 192.168.0.1 => dest ip 가 이것인 패킷 보여줌


* and 옵션으로 여러가지 조건의 조합 가능

# tcpdump -i eth0 src 192.168.0.1 and tcp port 80 => source ip 가 이것이면서 tcp port 80 인 패킷 보여줌


# tcpdump -i eth0 dst 192.168.0.1 => dest ip 가 이것인 패킷 보여줌

# tcpdump host 192.168.0.1 => host 를 지정하면, 이 ip 로 들어오거가 나가는 양방향 패킷 모두 보여줌

# tcpdump src 192.168.0.1 => host 중에서 src 가 이것인것 만 지정

# tcpdump dst 192.168.0.1 => host 중에서 dst 가 이것인것 만 지정

# tcpdump net 192.168.0.1/24 => CIDR 포맷으로 지정할 수 있다.

# tcpdump tcp => TCP 인것만

# tcpdump udp => UDP 인것만

# tcpdump port 3389 => 포트 양뱡항으로 이것인 것.

# tcpdump src port 3389 => src 포트가 이것인 것.

# tcpdump dst port 3389 => dst 포트가 이것인 것.


* combine : and ( && ) , or ( || ) , not ( ! ) 으로 여러가지를 조합해서 사용 가능

# tcpdump udp and src port 53 => UDP 이고 src 포트가 53 인 것

# tcpdump src x.x.x.x and not dst port 22 => src ip 가 x.x.x.x 이고 dst 포트가 22 가 아닌 것


* grouping : ( )

# tcpdump 'src x.x.x.x and ( dst port 3389 or 22 )' => src ip 가 x.x.x.x 이고 ( dst 포트가 3389 또는 22 ) 인 것  ==> 여기서는 ' ' 가 반드시 있어야 한다.

[출처] http://moyaria.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-tcpdump-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-%EC%98%B5%EC%85%98-%EC%A0%95%EB%A6%AC