mail (메일 보내고 받기)

  터미널에서 사용하는 메일 클라이언트 프로그램

 mail [-옵션] [-s 제목] [-c 참조] [-b 숨은참조] 받는사람
 mail [-옵션] -f 파일명
 mail [-옵션] -u 사용자 ID

 -v : 메일을 보내는 과정의 메시지를 자세히 보여준다.
 -i : tty 인터럽트 신호를 무시한다.
 -n : 메일프로그램 시작 시 /etc/mail.rc 파일을 읽지 않는다.
 -N : 초기 화면에서 메일목록을 보여주지 않는다.
 -s 제목 : 발송 메일의 제목을 적는다.
 -c 참조 : 같이 메일을 받을 사람을 추가한다.
 -b 숨은참조 : 같이 메일을 받는 사람을 추가한다. 숨은 참조 된 사람은 메일을 받은 다른사람에게는 보이지 않는다.
 -f : 파일로부터 메일을 읽어 온다.
 -u : 사용자 계정 지정

 mail은 터미널에서 사용하는 메일 클라이언트 프로그램이다. 메일을 보내고 받고 정리할 수 있다.

 – 받은 편지 확인
 자신의 계정을 사용 중에 받은 편지를 확인하려면 mail 만 입력한다. 다음은 관리자 모드에서 특정 계정의 받은 편지를 확인할 때 쓰인다.

User image
 mail 을 실행하면 초기 화면에 받은 편지의 목록이 나온다. 초기 화면에 나오는 부분을 메일의 헤더 부분이라 하는데 다음과 같이 구성되어 있다.

==============================================================================
N/P/U/ | 3701 | root@Ultra60.SunS | Fri Sep 11 23:13 | 91/2971 | [psad-alert]
——————————————————————————
편지상태 | 편지번호 | 보낸 사람 | 날짜 시간 | 라인/글자수 | 편지 제목
==============================================================================

 – 편지 상태
 N : 새 메시지
 P : 시스템의 메일박스에 저장
 U : 읽지 않은 메일

 처음 수신된 편지부터 확인하려면 <Enter> 를 누른다. 특정 편지를 보기를 원한다면 & 편지 번호를 지정한다.

 – mail 명령어
 mail의 여러 기능은 명령어를 통해 이루어진다. 명령어 입력 모드는 “&”로 표시한다.

 명령어                          설명
 n                  다음 편지로 이동한다.
 f <편지 번호>    편지 목록을 보여준다. f* 또는 & f a 모든 편지 목록을 볼 수 있다.
 d <편지 번호>    지정한 편지 번호의 편지를 지운다.
 s <편지 번호>    파일파일에 지정한 편지 내용을 저장한다.
 u <편지 번호>    편지를 지우지 않는다.
 R <편지 번호>    회신 한다.
 r <편지 번호>    전체 회신 한다.
 q                  mail 종료
 x                  mail 종료, 시스템 메일박스에서 삭제 하지 않는다.
 h                  메시지의 헤더 부분을 출력한다.
 !                  쉘 명령어를 실행한다
 e                  Ex 모드로 메시지를 편집한다.

 – 회신 보내기
 편지 보기 명령 창에서 현재 메일에 회신을 보내기를 원하면 R 명령을 입력한다. 내용을 다 입력하면 <Ctrl+D>
를 눌러 편지 입력을 종료한다.
 참조인이 없을 경우 그냥 <Enter> 키를 누른다

 – 편지 보내기
 mail을 실행한 상태에서 명령창에 &m 주소의 형식으로 입력하는 것 만으로도 편지를 발송할 수 있다.
 메일을 쓰다가 내용을 수정하고 싶을 때에는 새 줄 첫 번째 칸에 ~v 라고 입력하면 vi 편집기 상태에서 내용을 수정할 수 있다.
 본문 중에 텍스트 파일을 첨부할 때에는 새 줄 첫 번째 칸에 ~r 파일이름 형식으로 입력한다.

 mail 명령으로는 바이너리 파일을 바로 첨부할 수 없었다. 그래서 파일을 디코드하여 텍스트 형태로 전송할 수 있게 만들어 보내곤 했다. 현재에는 pine이나 넷스케이프 메일러, K 메일러 등 파일 첨부가 자유로운 메일 클라이언트를 많이 사용한다.

iptables (커널 2.4대의 방화벽 관리도구)

 커널 2.4대에서 방화벽, 규칙 설정, IP 매스커레이딩을 조정하는 커널 도구

 iptables -[ADC] chain 상세룰 [옵션]
 iptables -[RI] chain 룰번호 상세룰 [옵션]
 iptables -D chain 룰번호 [옵션]
 iptables -[LFZ] [chain] [옵션]
 iptables -[NX] chain
 iptables -E 이번체인이름 새로운체인이름
 iptables -P chain target [옵션]
 iptables -h

 -A chain, –append chain : chain을 추가한다.
 -D chain, –delete chain : chain에서 룰을 삭제한다.
 -D chain 룰넘버, –delete chain 룰넘버 : chain 정책 중 지정한 룰넘버를 삭제한다. 만일 룰넘버가 1이라면 chain 규칙의 첫 번째 룰을 삭제한다.
 -I chain [룰넘버], –insert chain [룰넘버] : chain 정책에 지정한 숫자번째에 삽입하거나, 마지막에 룰을 삽입한다.
 -R chain 룰넘버, –relace : chain 정책 중 지정한 숫자번째의 룰을 교체한다.
 -L [chain], –list [chain] 모든 chain 정책을 보거나, 지정한 chain 정책을 본다.
 -F [chain], –flush : 모든 chain 정책을 삭제하거나, 지정한 chain 정책을 삭제한다.
 -Z [chain], –zero : 모든 chain 정책을 제로로 만들거나, 지정한 chain 정책을 제로로 만든다.
 -C chain, –check chain : 설정한 chain 정책을 테스트한다.
 -N chain, –new-chain : 새로운 정책을 만든다.
 -X [chain], –delete-chain : 사용자가 만든 chain이나 모든 chain을 삭제한다.
 -P chain target, –policy chain target : chain 정책을 지정한 chain 정책으로 바꾼다.
 -E old-chain new-chain, –rename-chain old-chain new-chain : chain명을 바꾼다.
 -p, –protocol [!] proto : 프로토콜을 지정한다. !은 제외의 의미이다.
 -s, –source [!] address[/mask] : 출발지 주소를 지정한다. mask는 C클래스면 255.255.255.0이나 24비트로 표현된다.
 -d, –destination [!] address[/mask] : 목적지 주소를 지정한다.
 -i, –in-interface [!] input name[+] 수신하는 네트워크 인터페이스 이름을 지정한다. name+은 name으로 시작하는 모든 인터페이스 이름이다.
 -j –jump target : 지정하는 target으로 리다이렉트 시킨다.
 -m : 지정한 match로 확장이 가능하다.
 -n : IP주소와 포트번호를 숫자 그대로 보여준다.
 -o, –out-interface [!] output name[+] : 발신하는 네트워크 인터페이스 이름을 지정한다.
 -v, –verbose : 상세한 정보를 보여준다.
 –line-numbers : 룰정책을 보여줄 때 줄번호도 나타낸다.
 -x, –exact : 정확한 값으로 나타낸다.
 -V, –version : 버전 정보를 보여준다.

 iptables는 netfilter 필터링 룰에 사용한다. 대부분 ipchains와 사용법이 거의 같으나, 가장 큰 차이점은 확장성에 있다. 정상적으로 커널 확장은 커널 모듈 하부 디렉토리(/lib/modules/커널버전/kernel/net)에 존재하는데, iptables는 요구에 의하여 적재된다. 그래서, 아들 모듈을 직접 적재할 필요는 없다. iptables의 확장들은 공유 라이브러리 형태로 보통 /usr/local/lib/iptables 에 위치한다. 배포판은 이것을 /lib/tables나 /usr/lib/tables 에 넣으려 할 것이다.

User image 우분투 8.10-Desktop 의 경우 /lib/iptables 밑에 존재한다.

 ipchain이 iptables에서 변경된 사항들은 다음과 같다.

 * 미리 만들어진 체인 이름 (input, output, forward)가 소문자에서 대문자로 바뀌었다.

 * -i 지시자는 들어오는 인터페이스만 의미하고 INPUT과 FORWARD chain에서만 작동한다. FORWARD나 OUTPUT chain은 -o 로 사용한다.

 * TCP와 UDP 포트는 –source-port, –sport (–destination-port, –dport)과 사용하게 된다. -p tcp 또는 -p udp 옵션과 함께 사용되어져야 한다.

 * TCP -y 지시자는 –syn 으로 바뀌었고 -p tcp 다음에 와야한다.

 * DENY target 는 DROP으로 바뀌었다.

 * iptables 를 이용하여 정책들을 입력하였다면, 이는 메모리에 적재될 뿐이므로 시스템을 다시 시작한 후에는 모두 사라질 것이다. 이를 iptables-save 명령으로 저장이 가능하다.

 # iptables-save > iptables_test

 아래와 같이 iptables-restore 명령으로 저장한 정책 파일을 불러올 수도 있다.

 # iptables-restore < iptables_test

 * 매스커레이딩(iptables)
 ipchain 명령과 마찬가지로 내부 인터넷 연결 공유를 할 수 있다. masquerading 기법으로 한 컴퓨터에 두 개의 네트워크 인터페이스를 설정한 다음, 하나는 외부의 인터넷과 연결되어 있고, 다른 하나는 내부 게이트웨이(192.168.0.1 이라고 가정)의 역할을 하도록 설정한다. 내부 게이트웨이 역할을 하는 인터페이스와 연결된 허브를 통해 같은 192.168.0.0/24 대역의 아이피를 설정하여, 내부에서도 인터넷을 사용할 수 있도록 할 수 있다. 아래의 스크립트는 최소의 masquerading 기법을 위한 입력으로 손쉽게 내부에 인터넷을 공유할 수 있다.

 # /sbin/iptables -F
 # echo “1” > /proc/sys/net/ipv4/ip_forward
 # iptables -t nat -A POSTROUTING -s 192.168.1.2/24 -j MASQUERADE

 * 솔라리스(Solaris)
 솔라리스는 BSD 계열의 SunOS를 바탕으로 하여, System V 계열의 영향을 받은 SunOS 5 버전부터는 Solaris 2.x 라는 이름도 함께 사용해 왔다. 이후 Solaris 2.7 부터는 다시 Solaris 7이라는 이름으로도 통용되고 있다. Sun 사에서는 이 OS를 자사에서 생산하는 스팍 플랫폼 용으로만 개발하였으나 인텔 플랫폼을 사용하는 경우가 늘어나며 인텔용 버전도 함께 개발하였다. 그러나 본질적으로는 거의 동일한 소스를 기반으로 컴파일한 제품이므로 성능 면에서는 큰 차이가 없다.

banner (문자 확대 출력)

 워드 프로세서가 보편적이지 않았을 때 큰 글자의 출력을 위해 많이 사용된 명령이다.

banner [-wn] 문자열 (Language : text)
-w : 기본적으로 출력되는 칸수는 132칸이나 -w 옵션을 사용하여 열 수를 정해 줄 수 있다. n 값이 없을 경우 80열로 표현된다.

n : 확대되어 출력되는 열 수

 문자열을 확대 출력할 때 사용된다. 문자가 # 으로 표현되어 확대 출력된다. 지금은 거의 사용하지 않는 명령이지만, 간혹 아스키 아트 등에서 큰 글씨를 표현할 때 이용하기도 한다.

 banner 명령에 별다른 옵션을 주지 않았을 경우에는 기본 값으로 132 열을 사용해서 확대 출력을 하게 된다. -w 옵션을 사용하면 확대하고 싶은 크기의 열 수를 정해 줄 수 있다. 다음은 “pchero” 문자열을 50열로 확대 출력한 예제이다.

사용자 삽입 이미지

 문자를 # 으로 표현하기 때문에 열 수가 많을 수록 미려한 글씨체를 얻을 수 있다.

badblocks (배드 블록 검사)

 저장 장치의 배드 블록을 검사하는 명령어

badblocks [옵션] [장치] [블록 개수] (Language : text)
장치 : 검사할 장치를 지정한다.

블록 개수  : 검사할 장치의 블록 개수

-b 블록 크기   : 블록 크기를 바이트 수로 나타낸다.

-o 파일  : 배드 블록 체크내용을 파일에 저장한다.

-v : 배드 블록 체크 내용을 상세히 보여준다.

-w : 각 블록에 몇 가지 패턴으로 쓰기, 읽기를 하면서 테스트한다.

 각 디스크의 배드 블록을 검사하는 명령이다.

 시스템의 /dev/hda1 디스크의 배드 블록을 검사해보자. 이 때 블록 개수를 알기 위해 먼저 fdisk 를 실행하여 디스크 정보를 확인하자. 블록 개수는 다음과 같은 방법으로 확인할 수 있다.

사용자 삽입 이미지

 위 명령의 결과로, /dev/sda1 에는 15358108 개의 블록이 있다는 사실을 알 수 있다.

사용자 삽입 이미지

 15358108 디스크 블럭에 1개의 배드 블럭이 발견되었음을 보여 준다.

a2p (awk-perl 변환)

 awk 스크립트를 perl 스크립트로 바꾸는 명령이다.

 

a2p [옵션] 파일명 (Language : text)
-F <문자> : 구분자를 정의한다. awk 의 필드를 나누는 기준이 되는 구분자 변수인 FS 변수를 지정된 문자로 정의한다.

-o : 예전 awk 형식의 스크립트를 반환한다.

 
 awk 스크립트를 perl 스크립트로 변환하는 명령어이다.

 awk 명령어에서 예제로 만든 간단한 스크립트를 가져와 변환해 보자. 이 예제는 문서의 단어 개수를 체크하는 스크립트이다.

 test.txt 라는 문서의 단어 수를 체크해 보자.

사용자 삽입 이미지

 이 awk 스크립트를 perl 스크립트로 변환한다.

사용자 삽입 이미지

 a2p 는 perl 스크립트로 변환하여 표준 출력으로 변환된 문서를 화면에 보여준다. 이 표준 출력을 word.perl 이라는 perl 스크립트로 만들어 실행하면 같은 결과를 얻을 수 있다.

 # a2p word.awk > word.perl

 # perl word.perl test.txt

 관련 명령어

  s2p : sed 스크립트를 perl 스크립트로 변환