본문 바로가기

Academy I/Tech Academy

Unix 5 통신,네트워크

유닉스 통신 개요
---------------------------------------------------------------------

1. 통신 개요

통신(Communication)은 정보의 교환이다.
데이타 처리 능력의 급속한 발전과 원거리상의 시스템과의 정보를 교환하기
위한 증가된 요구는 통신 시스템을 발전을 가져왔다.

데이타 통신은 원거리상의 시스템으로의 전자 정보의 전송을 말한다.

통신 시스템은 물리적으로 연결되는 몇가지 하드웨어적 요소들과
(예: 컴퓨터 시스템, 터미널, 기타 보조 장치, 모뎀과 통신 장비등),
하드웨어 구성요소들의 논리적 연결을 관리하기 위한 소프트웨어로 구성된다.
컴퓨터 시스템과 터미널은 데이타를 생성, 처리, 수신하는 역할을
수행한다. 모뎀은 컴퓨터에 의해 생성한 디지털 형식의 데이터를
통신 라인을 통해서 데이타를 보낼수 있는 형식 즉, 아날로그 형식으로
변환하는 역할을 수행한다. 통신 장비의 일반적인 것들로는 전화 라인,
케이블, 마이크로웨이브 와 위성 무선 송신 장비등이 있다.

1.1 통신 네트웍

데이터 전송은 통신 네트웍을 통해 수행된다. 통신 네트웍에는 지원 거리에
따른 다음과 같은 몇가지 방식들이 있다.

WANs(Wide Area Networks)은 100 km가 넘는 원거리 네트웍에 유용하다.
MANs(Medium Area Networks)은 100 km이내의 거리내의 네트웍에 유용하다.
LANs(Local Area Networks)은 10 km이내의 거리의 네트웍에 유용하다.
LAN에는 몇가지의 종류가 있는데, 이들간의 주된 차이점은
데이타 전송 속도, LAN으로의 접속 비용과 타시스템들과의 연결성
등이다.

통신 네트웍은 노드(node)와 노드들사이의 링크(link)로 구성된다.
노드는 정보를 다루기 위한(예를들면, 생성, 처리, 표시 또는 전송)
하드웨어의 위치를 의미한다. 그러므로 노드는 메인 프레임, 웍 스테이션,
터미널 또는 프린터같은 출력 장치 또는 네트웍이 될수 있다.
이러한 장치들의 접속에 의해 생성되는 기하학적 형태는 네트웍의
위상(toporogy)을 형성한다.
┌─────────────────────────────────┐
│% Toporogy (위상) :                                               │
│ 컴퓨터 네트웍에서 노드들의 물리적 또는 논리적인 배치를 말한다.   │
└─────────────────────────────────┘

네트웍의 위상에는 몇가지의 표준 형식 즉, star, ring, undefined와 bus
등의 방식이 있다.
각각의 위상은 통신 네트웍상에서 장.단점들이 있다.

1.2 데이타 전송

통신 라인상에서의 데이타가 전송되는 속도와 데이타의 양 또는
교통량(traffic:통신에서 송수신되는 메세지의 양)에는 두가지 고려사항이
있다.
이러한 고려사항들에는 사용되는 통신 라인들의 속도(low, medium, high),
데이타 전송 모드와( 한번에 한 문자 전송(비동기식(asynchronous)),
한번에 문자들의 그룹 전송(동기식(synchronous))) 라인을 통해 데이타가
전송되는 방향을(단방향(one way), 양방향(two way)) 결정하는 라인 종류들이

있다.

데이타의 전송은 소프트웨어에 의해 관리된다.
소프트웨어에 의해 수행되는 기본 기능은 다음과 같다.

1) 노드들 사이의 논리적 접속을 확립한다.
2) 네트웍에서의 통신 라인상에서의 교통량을 제어한다.
3) 에러 검증및 교정, 장애 발생점의 검색및 복구
4) 네트웍 관리 서비스의 제공
5) 송신자와 수신자사이에서 어떻게 정보가 교환될것인가에 관련된
모든 노드들 사이에 공통의 인식을 제공한다.

공통 규칙은 데이타 전송에 있어서 충돌을 피하기 위해 네트웍상의
모든 노드들에 대해서 적용되어야 만 한다. 이런 공통규칙을 프로토콜이라
한다. 다른 작업을 각각 담당해서 몇개의 프로토콜이 네트웍을 다스릴수
있다. 통신 프로토콜은 기본적으로 공급 업체에 의존한다. 각각의
공급자들은 자신들의 프로덕트들에 대한 유일한 프로토콜을 갖고 있다.
사용자가 여러개의 프로덕트들을 조합해 사용하게 됨으로써, 산업 표준을
구축해야 할 필요가 증대되었다. 그 결과로 몇개의 표준이 국가표준기구인
ANSI, IEEE 와 국제 표준기구인ISO 조직에 의해 개발되었다.
ISO 조직은 산업 표준이 된 OSI(Open Systems Interconnetion)라 불리우는
계층화된 프로토콜들의 통신 모델을 책임지고 있다.

2. 통신 시스템 예제

다음의 그림은 기본적인 통신 시스템의 구성을 보여준다.
이 그림에서의 각각의 시스템은 다른 터미널과 보조 장치들을 지원한다.


┏━━━┓
┃시스템┃      ┏━━━┓
┃ 4    ┠───┨Modem ┃
┗━━━┛      ┗━┯━┛


┏━━━┓Direct┏━━━┓          │
┃시스템┃Link  ┃시스템┃      ┏━┷━┓
┃ 3    ┠───┨ 1    ┠───┨Modem ┃
┗━━━┛      ┗━▒━┛      ┗━━━┛
▒ LAN
┏━▒━┓
┃시스템┃
┃ 2    ┃
┗━━━┛


시스템1은 이 예제의 구성에서 하나의 노드이다.
시스템3은 시스템1에 케이블을 통해 직접 접속되어 있다.
이 방식은 물리적으로 시스템에 접속되는 케이블의 길이에 의해
시스템 사이의 거리가 제한된다.
시스템4는 컴퓨터에 의해 생성된 디지털 형식의 데이타를 토신 장비들에
의해 전달될수 있는 형식으로 변환하기 위한 모뎀장치를 통해 시스템1과
간접적으로 연결되고, 통신하고 있다. 간접 접속 방식은 원거리상의
시스템과 접속을 허용한다.
시스템2는 LAN을 통해 시스템1과 간접 접속되고 있다.
하드웨어 구성요소들의 논리적 접속은 소프트웨어에 의해 관리된다.


---------------------------------------------------------------------------


단말간의 메세지 송수신 기능

유닉스 시스템 내부 통신
---------------------------------------------------------------------

1. 유닉스 통신

유닉스 시스템에는 기본적으로 내부(Local) 통신과 외부(Remote) 통신등
2 종류가 있다. 유닉스는 동일 시스템상의 사용자들 사이의 통신과
타 시스템과의 통신을 하기 위한 다양한 명령어들을 제공한다.

이번에 강의할 통신 기능은 동일 시스템상의 사용자들간의 통신을 위한
유틸리티에 대해서 설명한다. 기본적인 네트웍상의 타시스템과의
통신을 위한 유틸리티들에 대해서는 차후에 다시 설명한다.

시스템 내부 통신 기능

- 시스템 뉴스 기능 news
- 터미널간의 메세지 송수신 기능 mesg finger write
- 사용자 전자 메일 기능 mail mailx notify vacation

2. 시스템 뉴스 표시

news 시스템 뉴스를 표시한다.

┌──────────┐
│ news [-option]     │
└──────────┘


news 기능은 공고, 고지, 공보와 같은 뉴스 항목의 시스템 차원의 게시를
허용한다. news 명령어는 /etc/profile내에 선언되어 있기 때문에
로그인시에 자동적으로 실행된다.

뉴스 항목들은 현재(currency)를 기준으로 표시된다. currency는
사용자의 홈 디렉토리내의 .news_time 화일의 수정 날짜를 참조한다.
.news_time의 날짜보다 최근 수정시간을 갖는 새로운 화일만이 currency로
고려된다.

인자없이 지정된 news 명령어는 /var/news 디렉토리내의 모든 currency
화일들을 표시한다. 특정의 뉴스 항목을 표시하기 위해서는 news 명령어의
인자로서 뉴스 항목의 이름을 지정한다.

( 옵션 )

-a currency에 개의치 않고 모든 뉴스 항목들을 표시한다.
-n currency 뉴스 화일들의 이름만을 표시한다.
-s currency 뉴스 항목의 갯수를 표시한다.

( 예제 )
┌──────────────┐
│$news -n                    │ -n 옵션이 지정되어 현재의
│item4 item3 item2 item1     │ 뉴스 항목 이름들만이 표시된다.
└──────────────┘

┌─────────┐
│$news -s          │ -s 옵션으로 인해 뉴스 항목의 갯수만이
│4 news items.     │ 표시된다.
└─────────┘


┌─────────────────────────────┐
│$news item3                                               │
│item3 (root) Tue Oct 8 08:40:17 1991                      │
│A staff meeting for Organization X is scheduled for next  │
│Friday, october 18th, at 8:30 a.m. All department members │
│should plan to attend                                     │
└─────────────────────────────┘


특정의 뉴스 항목의 내용을 참조하기 위한 방식을 보여주는 예이다.

3. 메세지 송수신 기능

3.1 자신의 터미널로의 메세지 수신 여부 설정
┌───────────┐
│ mesg [option]        │
└───────────┘


mesg 명령어는 자신의 터미널로 다른 사용자에 의한 메세지의 수신을
허용하거나 거절한다. 명령어에 옵션을 지정하지 않으면, mesg 명령어는
현재 설정되어 있는 값을 표시한다.

( 옵션 )

n 터미널로의 메세지 표시를 거부한다.
y 터미널로의 메세지 표시를 허용한다.

( 예제 )
┌────┐ 인자를 지정하지 않았음으로 현재 mesg에
│$mesg │ 설정된 값을 보여준다.
│is y │
└────┘
┌────┐ 인자로서 n을 지정하였기 때문에, 다른 사용자로부터의
│$mesg n │ 메세지 수신이 거부된다.
│is n    │
└────┘
┌────┐ 위 예의 명령 실행후 결과를 확인하고 있다.
│$mesg   │
│is n    │
└────┘

3.2 메세지를 전송할 터미널의 로그인 여부 확인

finger 동일 시스템 과 다른 시스템상의 로그인한 사용자 정보를 확인
┌───────────┐
│ finger [-option]     │
└───────────┘

이 명령어는 동일 시스템 또는 다른 시스템상에 로그인한 각각의 사용자에
대한 정보를 표시한다. 이 때의 사용자 정보에는 로그인 명,
/etc/passwd 화일에 기술되어 있는 로그인 명의 주석, 터미널 이름,
단말의 휴면 시간, 로그인 시간, 위치등이 포함되어 있다.
만일 터미널 이름의 처음에 *가 표시되면, 이단말은 메세지 수신이
거부되고 있음을 나타낸다.

( 옵션 )

-f 출력상의 각 필드에 대한 필드명을 표시하지 않는다.
-q 출력상에 로그인 명, 터미널과 로그인 시간만을 표시한다.
-l 자세한 출력을 행한다.
-b 자세한 출력내에서 사용자의 홈 디렉토리및 쉘을 표시하지 않는다.

┌────────────────────────────────┐
│$finger                                                         │
│Login Name TTY Idle When Where                                  │
│wjnr Bill Radogna00) *console 1:17 Thu 08:10                    │
│root 0000-Admin(0000) *term/15 1 Thu 08:11                      │
│root 0000-Admin(0000) term/10 20 Fri 10:19 italy                │
│userb bourne user term/12 1:01 Fri 10:25                        │
└────────────────────────────────┘


위의 예는 finger 명령어의 표준적인 출력을 보여주고 있다.
이 출력상에서 TTY 필드에 *가 붙어 있는 것은 해당 단말에
메세지 수령이 거부되었음을 나타낸다. 다음은 출력상의 각 필드에
대한 설명이다.
Login : 사용자의 로그인 명
Name : 사용자에 대한 주석 (/etc/passwd 화일에서 추출)
TTY : 현재 로그인을 하고 있는 단말의 식별명
Idle : 단말의 휴면 시간 ( 작업이 아무것도 수행되지
않으며 경과된 시간 )
When : 단말이 로그인된 시간
Where : 단말이 접속되어 있는 시스템

┌────────────────────────────────┐
│$finger -f                                                      │
│wjnr Bill Radogna00) *console 1:17 Thu 08:10                    │
│root 0000-Admin(0000) *term/15 1 Thu 08:11                      │
│root 0000-Admin(0000) term/10 20 Fri 10:19 italy                │
│userb bourne user term/12 1:01 Fri 10:25                        │
└────────────────────────────────┘


-f 옵션으로 인해 각 필드의 제목이 표시되지 않고 있다.

┌────────────────────┐
│$finger -q                              │
│Login TTY When                          │
│wjnr *console 08:10                     │
│root *term/15 08:11                     │
│root term/10 10:19                      │
│userb term/12 10:25                     │
└────────────────────┘

-q 옵션은 가장 간단한 형태로 출력을 생성해 준다.

┌──────────────────────────────┐
│$finger -l                                                  │
│Login name: userb (message off) In real life: bourne user   │
│Directory: /home/userb Shell: /sbin/sh                      │
│On since Oct 8 08:47:08 on term/18                          │
└──────────────────────────────┘

-l 옵션으로 인해 가장 자세한 정보를 표시하고 있다.

3.3 메세지의 송신

write : 다른 사용자의 터미널로 메세지를 보낸다.
┌────────────┐
│ write user [terminal]      │
└────────────┘
write 명령어는 로그인되어 있는 터미널로 메세지를 보내거나,
다른 사용자와의 양방향 통신을 하기위해 사용한다. 이 명령어는
수신측 단말의 mesg 설정에 의존한다. 수신측 단말의 상태는
finger 명령어를 사용하여 확인할 수 있다.

write 명령어는 라인 단위의 전송을 수행한다. 이때문에 다른 사용자에게
송신을 할 경우, 응답을 받기위해 메세지의 끝을 표시하는 o 문자로 신호를
보내야만 사용자가 입력한 라인이 상대 단말로 전달된다.
그리고 통신할 사항이 더이상 없음을 알리기 위해서는 oo 문자를
입력한다.

송신 터미널과 수신 터미널사이의 접속을 확립하기 위해, 각각의 사용자는
단말에서 write 명령어와 메세지를 송신할 사용자의 이름을 입력해야만 한다.
사용자가 다른 단말에서 로그온을 하였을 경우에 사용자의 이름을 대신해서
단말명(Device name)이 사용할 수 있다.

write 명령어를 송수신측이 모두 입력한 후에는 각각의 사용자는 메세지와
응답 표시자인 o와 접속 종료 표시자인 oo 만을 입력한다. 접속을 종료하고,
쉘 프롬프트로 돌아가기 위해서는 각 사용자는 ^d를 누른다. ^d를 누를면
통신중이던 상대 단말에 <EOT>가 표시된다.

( 옵션 )

term/n 터미널 이름을 지정한다.

다음은 user1이라는 사용자와 user2라는 사용자의 메세지를 주고 받는
예제이다.

---------------------------------------------------------------------------

전자 우편 송수신 기능: mail

유닉스 전자우편(mail) 기능
---------------------------------------------------------------------

1. 전자우편 기능

mail 메일을 보내거나 읽는다.

┌───────────────┐
│ mail [-option] user(s)       │
└───────────────┘


메일 메세지들은 /var/mail 밑의 사용자명(logname)으로 생성되는
사용자의 사서함(mail file)에 보내진다. 메일의 내용은 사용자 로그인시에
자동 실행되는 /etc/profile에 의해 자동 검사된다.

1.1 메일 보내기

메일을 보내기 위해서는 mail 명령어와 함께 보낼 사용자명을 지정한다.
그후 mail 명령어는 발송할 내용을 키보드로 부터 여러 라인에 걸쳐서
입력 받게되는데, 각 라인의 끝에서 <return>을 누름으로써 계속된 입력을
행할 수 있다. 그리고 메세지의 입력은 <^d>를 누름으로써 종료할 수 있으며,
<^d>를 누르게 되면 비로소 지정 사용자의 사서함으로 전달된다.

만일 mail 명령어가 메세지 입력되는 동안 비정상적으로 종료하게되면
지금까지 입력했던 메세지들은 dead.letter라는 이름으로 사용자의
홈 디렉토리속에 저장된다. 또한 사용자 에러가 메세지 입력동안에
일어나게 되면, 에러에 대한 설명을 송신자쪽에 보내준다.

네트웍상의 다른 유닉스 시스템상의 사용자에게 메일을 보내기 위해서는
system_name!logname 형식으로 사용자명을 입력한다. 다른 시스템으로
메일을 보내기 위해서는 기본적으로 BNU 유틸리티들의 구성이 요구된다.
BNU 유틸리티에 대한 자세한 설명은 차후 다시 설명된다. 또한 다른 시스템의
이름을 알기 위해서는 차후에 설명된 uuname 명령어를 사용한다.

( 옵션 )

-t 수신자가 메일을 읽을때 To: 라는 형식의 헤더를(header) 표시한다.

( 예제 )
┌───────────────────┐ mail 명령어는 송신할
│$mail user                            │ 메세지를 키보드로 부터
│There is an unscheduled staff meeting │ 입력을 받는다. 처음의
│this afternoon at 1330 in room 302.   │ 명령어는 키보드로부터
│<^d>                                  │ 받아 처리하는 예를
│$mail user3 user4 < memo              │ 보여준다. 그러나 두번째
└───────────────────┘ 예제는 사전에 사용자가
편집기를 통해 생성해 놓은 화일의 내용을 키보드로부터의 입력을
대신해서 메일로 발송하는 방식을 보여준다.


1.2메일 읽기

시스템은 사용자가 로그인 작업을 실행할 때 새로운 메일이 있을 경우에
"you have mail"이라는 메세지를 표시한다. 이 경우 새로운 메일의
내용을 표시하기 위해서는 mail 명령어와 <return>을 입력한다.
그러면 송신자의 이름, 메일 수신 날짜와 시간, 메세지의 길이를
나타내는 표제가 표시된다. 이때 가장 최근에 수신된 메세지를
먼저 표시한다. 내용이 긴 메일을 확인할 경우에는 <Hold Screen> 또는
<^s>와 <^q> 키를 이용하여 스크린으로의 출력을 정지및 계속할 수 있다.
한나의 메일이 모두 표시된후에는 ?라는 프롬프트가 표시된다. 이때
다음 메일을 표시하기 위해서는 ? 프롬프트가 표시된후 <enter>를
입력한다. mail 프로그램을 실행하는 중간에서 몇가지의 명령어를
사용할 수 있다. 예를들면, 메세지를 삭제하거나, 삭제된 것을 복구하거나,
기본 사서함에 저장하는 작업을 할 수 있다. 메일 프롬프트에서
사용 가능한 명령어를 확인하기 위해서는 ?를 입력한다.
그리고 변경 사항을 저장하고, 메일을 종료하기 위해서는 q를 입력하고,
변경 사항을 저장하지 않고 종료하기 위해서는 x를 입력한다.

( 옵션 )

-p 별도의 프롬프트 없이 모든 메세지들을 표시한다.
-r 가장 오래전에 수신된 메일부터 표시한다.
-e 새로운 메일 수신 여부를 검사한다.
메세지가 표시되지 않는다.
-Fuser
수신된 메일을 지정한 사용자에 보낸다.

( 예제 )
┌───────────────────────────────┐
│you have mail                                                 │
│$mail                                                         │
│1 letters found in /ver/mail/userb, 0 scheduled for deletion, │
│0 newly arrived                                               │
│> 1 340 userb Thu Aug 27 10:51 EDT 1991                       │
│?                                                             │
└───────────────────────────────┘

사용자가 로그인시에 유닉스 시스템이 사용자의 신규 메일 여부를
확인해서, 신규 메일이 있을 경우에 "you have mail"이라는 메세지를
표시해 준다. 이 경우 사용자가 신규 메일을 확인코자 할 경우에는
mail 명령어를 이용한다. 명령어를 실행하면 예제와 같이 수신된
메일들의 목록을 표시해주고, 사용자가 계속된 작업을 수행할 수 있도록
? 프롬프트를 표시해 준다.

---------------------------------------------------------------------------
고성능 전자우편 송수신 기능: mailx

고성능 전자우편(mailx) 기능
---------------------------------------------------------------------

1. 고성능 전자우편(mailx) 기능

mailx 메일을 송신하고, 수신하기 위해 고성능 전자우편 유틸리티이다.

┌─────────────┐
│ mailx [-option] user(s)  │
└─────────────┘


mailx를 사용하여 메일을 송수신하기 위한 절차는 mail 기능과
유사하다. mailx는 mail 기능에서는 사용불가능한 별도의 기능을
제공한다. 더우기 mailx는 사용자 환경의 재정의 기능을 제공한다.
시스템 관리자는 모든 사용자를 위해, 시스템 화일인 /etc/mail/mailx.rc
화일에 메일 명령어 또는 변수들을 지정할 수 있다. 사용자는
홈 디렉토리내에 다른 메일 변수 또는 명령어를 선언하고 있는
.mailrc라 불리우는 화일을 또한 생성할 수 있다.

메일의 송신

mailx는 자동적으로 메일의 주제를 묻는 프롬프트를 표시한다.
mailx는 또한 메일의 메세지를 입력하는 동안 사용하는 tield escapes(~)라
불리우는 몇개의 명령어를 제공한다. 이러한 명령어들은 메일을
입력하는 동안과 메일을 보내기 전에 메일을 편집할수 있도록 해준다.

system_name!logname이라는 형식으로 메일을 네트웍상의 다른 시스템상의
사용자에게 발송할 수 있다. mail 기능에서 설명했듯이, 다른 시스템상의
사용자에게 메일을 발송하기 위해서는 BNU 유틸리티의 구성이 요구된다.
BNU는 차후에 다시 설명된다. 또한 네트웍상의 시스템명을 확인하기
위해서는 uuname 명령어를 사용한다.

mailx를 사용하여 메일을 보내기 위한 절차는 이후에 설명된다.

메일 읽기

새로운 메일이 수신되었을 경우 "you have mail"이라는 메세지가 표시된다.
mailx는 메일을 관리하기 위한 다양한 명령어들을 제공한다.

mailx를 사용하여 메일을 읽기 위한 방식은 이후에 설명된다.

2. mailx - 메일의 송신

mailx를 사용하여 메일을 전송하기 위한 명령어 형식은 다음과 같다.

┌───────────────┐
│ mailx [-option] user(s)      │
└───────────────┘


mailx 명령이 요구되면 주제를 물어보는 subject 프롬프트가 표시된다.
이런 주제는 -s 옵션을 지정함으로써 명령어 라인상에서 미리 지정할 수도
있다. 메일의 텍스트를 입력하고, 각 라인의 끝에서 <RETURN>을 누른다.
그리고 텍스트의 입력을 끝내고 메일을 송신하기 위해서는 <^d>를 누르거나,
라인의 처음에서 ~q명령어를 입력한다.

tield escape(~)라 불리우는 다양한 mailx 명령어들은 메일의 텍스트를
입력하는 동안의 부가적인 기능을 제공한다. 이러한 mailx 명령어들은
라인의 처음에 입력한다. 빈번하게 사용하는 입력 명령어는 아래와 같다.
그리고 작업중 사용 가능한 mailx의 tield escape 명령어들은 ~?를
사용하여 확인할 수 있다.

tield escape (입력 명령어)

~e 또는 ~v 메일의 텍스트를 교정하고, 조작하기 위해 편집기를
호출한다. ~e 를 위한 편집기는 ed이며, ~v를 위한 편집기는
vi이다. (이들은 .profile이나 mailx 기동 화일인 .mailrc
화일에 의해 수정될 수 있다.)
~p ~p 명령어를 입력하기 전까지의 메세지를 프린트 또는
미리 표시해 본다.
~r file 지정한 화일의 내용을 현 위치로 읽어 들인다.
~h 수정될수 있는 모든 표제(header) 정보를 표시한다.
~t user(s) 발송자 목록에 사용자 이름을 추가한다.
~c user(s) 사본 복사(carbon copy) 목록에 사용자 이름을 추가한다.
~b user(s) 수취인 불명 복사(blind copy) 목록에 사용자 이름을
추가한다.
~!command 유닉스 명령어를 실행하기 위해 쉘로 잠시 빠져나간다.
~q 메일 작업을 끝낸다. 지금까지 편집한 메일의 내용은
사용자의 홈 디렉토리속에 dead.letter라는 화일에 저장된다.
~x 메일 작업을 끝낸다. 편집하던 메일의 내용은 저장되지
않는다.
~. 작업중이던 메일을 발송하고, 메일 작업을 종료한다.

( 옵션 )

-s subject 명령어 라인에서 메일의 주제를 지정한다.

( 예제 )

┌───────────────────┐ 이 예제는 mailx 기능을
│$mailx user1                          │ 이용하여 user1이라는
│Subject: Staff meeting input          │ 사용자에게 메일을 보내고
│                                      │ 있다.
│I am enclosing the following notes    │ 이때 mailx 명령을
│as input to the meeting scheduled     │ 실행하면 예와 같이
│for this afternoon                    │ Subject를 묻는 프롬프트가
│~r admin/notes                        │ 표시된다.
│"admin/notes" 14 872                  │ 또한 메일을 입력하는 도중
│                                      │ ~r 명령을 사용하여
│Regret missing this meeting. Kindly   │ admin/notes 화일의 내용을
│send a summary of the salient points. │ 읽어 위치시키는 것도
│~.                                    │ 보여주고 있다.
│EOT                                   │ 마지막으로 ~.명령을 사용해
└───────────────────┘ 메일을 발송하고 있다.

3. mailx - 메일 읽기

수신된 메일은 각 사용자에 대한 디폴트 메일 사서함 화일인
/var/mail/logname에 저장된다. 메일을 읽게되면, 메일들은 사용자
홈 디렉토리내에 mbox라 불리우는 보조 기억 화일에 이동되어야 할 것으로
표시 된다. 이렇게 표식된 메일들은 사용자가 q 명령어를 입력할 경우에
mbox 화일에 실제이동된다.

새로운 메일이 수신 되었을 경우에는 "you have mail"이라는 메세지가
표시된다. 메일을 읽기 위해서는 mailx 명령어와 <return>을 누른다.
그러면 mailx의 버전 번호와 함께 도움 메세지가 표시된다. 그 다음
라인에는 사용자 메일 화일의 이름, 메일의 갯수와 상태 정보가 프린트 되고,
메세지의 목록과 메일의 서술적인 정보가 뒤따른다. 현재 작업 대상이 되는
메일의 목록 앞에 > 표시가 나타난다. 그리고 연이어 N 또는 U라는 문자가
각 메일의 상태를 표시하는데, 이때 N은 new, U는 unread라는 의미를
나타낸다. 이 문자들에 연이어 송신자 명, 송신 날짜및 시간, 메일의
라인수와 문자수에 대한 정보등이 각 메일별로 표시된다.
이런 정보들을 표시한후, ?모양의 메일 프롬프트가 자동적으로 표시된다.
메일의 내용은 <return>을 누르거나, 메일 명령어를 사용하여 표시할 수 있다.

mailx 기능은 수신된 메일을 관리하기 위한 다양한 명령어를 제공한다.
명령어의 목록은 메일 프롬프트에서 ?(물음표)를 입력함에 의해서 확인할 수
있다.

mailx 명령을 종료하기 위해서는 두가지 표준 형식이 있다. q 명령어는
사용자의 mbox 화일로 읽은 메일을 이동한다. 모든 다른 메일 명령어는
영향을 받게된다. x 명령어는 아무런 영향을 주지않고 메일들을 사서함에
남겨둔채 메일을 종료하고, 변경 사항을 무시한다.

( 옵션 )

-e 수신된 메일이 있는가를 검사한다.
아무런 메세지도 표시되지 않는다.
-f file 대체 메일 화일로부터 메일을 읽어들인다.
( 대체 메일 화일은 사용자가 자신의 메일을 보존하기 위해
시스템에서 제공하는 사서함이 아닌 다른 화일을 지정할 수
있는데, 이 화일을 대체 메일 화일이라 한다. )
-H 표제(Header) 요약 정보만을 표시한다.
-N 표제(Header) 요약 정보를 표시하지 않는다.

( 예제 )
┌──────────────────────────────────┐
│$mailx                                                              │
│mailx version 4.0 Type ? for help.                                  │
│"/var/mail/userb": 1 message 1 new                                  │
│>N 1 userb Thu Aug 27 10:51 10/340                                  │
│                                                                    │
│? ?                                                                 │
│alias,group user ... declare alias for the user name                │
│alternates user declare alternate names for your login              │
│cd,chdir [directory] chdir to directory or home if nonegiven        │
│!command shell escape                                               │
│copy [msglist] file save messages to file without marking as saved  │
│delete [msglist] delete messages                                    │
│discard,ignore header discard header field when                     │
│                                                                    │
│[msglist] is optional and specifies message by number, author,      │
│subject or type. The default is the current message.                │
│?h                                                                  │
│>N 1 userb Tue Aug 27 10:51 10/340                                  │
│                                                                    │
│?q                                                                  │
│Held 1 message in /var/mail/userb                                   │
└──────────────────────────────────┘

위의 예제는 mailx 명령을 이용해서 메일을 읽는 방식을 보여준다.
현재 메일의 상태 정보가 mailx 명령어를 요구한 싯점에서 자동적으로
표시된다. 위의 예에서는 mailx에서 제공하는 내부 명령어들을 확인 하기
위해 ? 명령을 사용해 표시하고 있다. 또한 h 명령어를 통해 표제(header)
만을 표시하는 것을 보여주고 있으며, q 명령어를 통해 mailx를 종료하는
것을 보여준다. 그러나 이 예에서는 메일의 내용을 읽지 않았기 때문에
고유의 사용자 사서함 화일에 저장되는 것을 볼수있다.

---------------------------------------------------------------------------

전자우편 보조 기능: notify,vacation
---------------------------------------------------------------------
1. 수신 메일의 통지및 다른 화일로의 저장

┌───────────┐
│ notify [-option]     │
└───────────┘


이 명령어는 새로운 메일이 수신될때 사용자에게 통지하고, 수신된 메일을
지정한 화일에 저장한다.
이미 설명한 mesg 명령의 설정은 통지 메세지의 표시를 허용하거나,
불가능하게 한다. notify 명령은 메일을 다른 화일로 보내기 위해서도
사용될 수 있다. 이 경우 notify 명령어를 실행시 -m 옵션을 통해
그 화일을 지정해야 하는데, 만일 지정하지 않을 경우에 새로운 메일은
사용자 홈 디렉토리 속의 .mailfile로 보내지게 된다.

명령어를 실행할 때에 -y 옵션을 지정함에 의해 통지 기능이 기동된다.
-n 옵션은 통지 기능을 중지한다. 그리고 인자없이 notify 명령어를
실행할 경우에는 현재의 통지기능 설정상태를 표시한다.

메일 명령어인 mail -F ""을 사용하여 수신된 메일의 다른 화일로의
저장을 종료할 수 있다. 이때 ""는 null 문자이다.

( 옵션 )

-y 통지 기능을 기동한다.
-n 통지 기능을 중지한다.
-m 지정한 화일에 메일을 저장한다.

( 예제 )
┌──────────────────────────────────┐
│$notify                                                             │
│/usr/bin/notify: Mail notification not active                       │
│$notify -y                                                          │
│$notify                                                             │
│/usr/bin/notify: Mail notification active                           │
│/usr/bin/notify: New mail message will go to '/home/user2/.mailfile'│
└──────────────────────────────────┘

위의 예에서 첫번째 notify는 통지 기능 설정 상태를 보여준다.
두번째 notify 명령어는 -y 옵션을 사용하여 통지 기능을 기동하고 있다.
기동 여부는 처음 예와 같이 현재 설정치를 표시함으로써 확인할 수 있다.
이때 표시되는 메세지중 두번째 라인이 수신된 메일이 저장될 화일의 위치를
나타낸다는 것을 주목하기 바란다.

2. 수신된 메일에대한 자동 응답 기능

vacation - 자동으로 수신된 메일에 대한 응답을 보내고, 수신된 메일을
다른 화일에 저장한다.

vacation 명령은 수신한 메일을 지정한 화일로 보내고, 자동적으로 메일에
대한 응답을 한다. 수신된 메일은 -m 옵션을 사용하여 특정 화일을 지정한
경우를 제외하고는, 사용자의 홈 디렉토리속의 .mailfile에 저장한다.
사용자의 .mailfile로 저장하는데 있어서의 문제가 발생하면, 송신자에게
메일을 되돌려주는 것을 대신에, -F 옵션을 사용하여 다른 사용자의
사서함으로 보낼수 있다.

디폴트 응답 메일은 명령어상에 -M 옵션을 지정함에의해 메일을 보낸
사용자에게 보내진다. 이를대신해 사용자는 편집기를 사용하여 응답 메일을
생성할 수 있는데, 사용자가 작성한 응답 화일은 명령어 라인상에 -M
옵션과 함께 지정한다.

사용자 홈 디렉토리내의 .maillog 화일에는 응답 메세지를 보낸 사용자들에
대한 기록들이 보존된다. 사용자 지정 메일 화일 설정은 mail -F "" 명령을
사용하여 중지할 수 있다. 이때 ""는 null을 의미한다.

( 옵션 )

-F user 수신된 메일을 넘겨줄 사용자를 지정한다.
-l log_file 응답 메세지를 발송한 사용자의 기록을 저장할 화일을
지정한다.
-m mail_file 수신된 메일을 저장할 메일 화일을 지정한다.
-M reply_file 사용자가 작성한 응답 화일을 지정한다.

( 디폴트 응답 화일 예제 )
┌─────────────────────────────┐
│From user2 Mon Oct 7 15:59 1991                           │
│Subject: AUTOANSWERED!!!                                  │
│Content-Type: text                                        │
│Content-Length: 238                                       │
│                                                          │
│I am on vacation. I will read (and answer if necessary)   │
│your e-mail message when I return.                        │
│                                                          │
│This message was generated automatically and will         │
│receive it only once, although all the messages you send  │
│me while I am away WILL be saved.                         │
└─────────────────────────────┘

---------------------------------------------------------------------------

유닉스 시스템 표준 디렉토리및 화일
---------------------------------------------------------------------

1. 표준 디렉토리

/bin /usr/bin 디렉토리로 심볼릭 링크되어 있다.

이 디렉토리는 이전 버전의 유닉스와의 호환을 위해서생성되는
디렉토리이다.

/etc 부팅 절차, 시스템 기동, 시스템 종료와 디폴트 로그인에 관련된
디렉토리들과 화일들이 들어있는 시스템 관리자용 디렉토리이다.

이 디렉토리상의 화일들은 보통 아스키(ASCII) 화일들이며,
컴퓨터 모델의 종류에 종속된다. 대다수의 화일들은
개개의 컴퓨터에 대해서 재구성할 수 있다.

/dev 특수한 입출력(I/O) 화일들이 들어 있다.

하드 디스크, 디스켓, 터미널, 프린터와 자기 테이프를 포함한
각종의 입출력 장치로 또는 입출력 장치로 부터 데이타를 전송,
수신하기 위해 요구되는 블럭 화일과 문자 화일들이다.

/hinv 하드웨어 구성 화일이다.

/hinv 디렉토리는 유니시스 고유의 화일 시스템에 대한
마운트포인트(mount point)이다. 하드웨어 목록 화일들이
(Hardware Inventory File) 들어 있다.

/home 사용자의 홈 디렉토리들이 위치하는 디폴트 디렉토리이다.

/install 소프트웨어의 설치와 삭제를 위한 유틸리티 펙키지들을 탑재하기
위해서 관리자용 유틸리티인 sysadm 유틸리티에 의해 사용되는,
디렉토리이다.

/lib /usr/lib 디렉토리로 심볼릭 링크되어 있다.

이 디렉토리는 이전 버전의 유닉스와의 호환을 위해서 생성되는
디렉토리이다.

/mls audit trailing과 관련된 명령어들과 유틸리티들이 들어있는
다단계 보안 디렉토리이다. (Multi Level Security directory)

2. 표준 화일

/etc/cron.d/at.allow

at 과 batch 명령어를 사용 가능한 사용자의 목록이 들어 있는
화일이다.

/etc/group

사용자 그룹을 제어하기 위한 화일.

/etc/inittab

개개의 시스템 레벨에 정의된 프로세스를 실행하기 위한
쉘 스크립트 화일.

/etc/issue

로그인 직전에 표시될 메세지들을 선언하고 있는 화일.

/etc/motd

로그인 직후에 표시될 메세지들을 선언하고 있는 화일.

/etc/passwd

시스템 사용자를 제어하기 위한 화일

/etc/profile

시스템 차원의 사용 환경을 정의하고 있는 화일.

/etc/shadow

사용자가 운영하고 있는 패스워드를 제어하기 위한 화일.

/etc/ttydefs

터미널을 접속하고 있는 통신 라인을 제어하기 위한 화일.

/usr/lib/saf/ttymon

터미널 포트들에 대한 관리용 프로그램 화일(포트 모니터).

/usr/lib/saf/sac

포트 모니터들을 기동및 제어하기 위한 관리용 프로그램 화일.
( 이를 Service Access Controller라 한다. )

/usr/lib/terminfo

터미널 속성들을 선언하고 있는 화일.

## 기타의 시스템 디렉토리및 시스템 화일들은 그들에 상응하는 강의시에
자세히 설명될 것이다. ##

---------------------------------------------------------------------------



BNU(Basic Networking Utilities)의 일반 개요
---------------------------------------------------------------------

이번 강의에서는 Basic Networking Utilities(BNU)에 관한 관리 명령 수준의
인터페이스에 대해서 설명한다.

BNU는 유닉스 운영체제를 이용하는 컴퓨터간의 그리고 원격지 단말과의 통신을
허용한다. BNU는 컴퓨터들간의 화일의 복사(uucp,uuto), 원격지 시스템으로의
로그인및 원격지 시스템상에서의 명령어 실행(cu,ct,uux)등을 할수있게 해준다.

1. 기본적인 네트워킹 과정

BNU 팩키지를 적절히 설치및 구성을 하고나면, 유닉스 운영체제제를 사용하는
시스템들간에 통신이 가능하게 된다. 우선은 BNU가 시스템간의 통신을
수행하는 과정에 대한 일반적인 개요에 대해 설명한다.

1) 시스템상의 사용자가 원격지 시스템과 화일 전송 또는 원격지 시스템상의
명령어 실행 요구를 내린다 (단계 1). 그러면 원격지 시스템에 대한
억세스 가능 여부를 확인하기 위해서 자체 시스템상의 여러가지
BNU 데이타베이스 지원 화일을 참조한다. 이 단계는 사용자 요청을 자체
시스템상의 스풀 영역에 대한 큐(queue) 처리를 수행하고 다음 단계를
수행한다.

2) uucico 루틴이 자동으로 실행된다 (단계 2). 이때 원격지 시스템으로의
도달시기, 원격지 시스템과의 링크 구축 방식, 자체및 원격지 시스템간의
데이타 흐름 처리 방식및 원격지 시스템으로의 통신을 위한 최대
동시 요청 갯수의 도달 여부등을 결정하기 위해 여러가지 BNU 데이타베이스
지원 화일을 읽는다.

3) 통신을 요구하는 호출신호가 원격지 시스템에 수신되면, 원격지 시스템상의
uucico 루틴이 자동으로 시작된다(단계 3). 기동된 원격지 시스템상의
uucico 루틴은 시스템 억세스 허용 여부및 허용시의 조치사항등에
대한 정보를 확인하기 위해, 자신의 BNU 데이타베이스 지원 화일을 읽는다.

4) 수신된 내용들을 처리하기 위해 자체의 스풀 영역에 저장한다.
수신된 내용을 처리하기 위해, uuxqt 루틴이 기동되어 처리를 수행한다.

다음은 위에서 설명한 BNU 처리 과정을 그림으로 보여주는 것이다.

< 사용자가 소속된 시스템 > < 원격지 시스템 >

BNU           ┌──────┐         ┌─────┐
데이타베이스─┤ uucp/uux   │         │ uuxqt    │
화일들        └───┰──┘ (단계1) └──┰──┘ (단계4)
                      ┃                     ┃
            ┌────┸───┐     ┌───┸───┐
            │ spool/request  │     │ spool/request│
            └────┰───┘     └───┰───┘
                      ┃                     ┃
                      ┃                     ┃
                      ┃                     ┃
(단계2)               ┃                     ┃ (단계3)
BNU             ┌──┸──┐         ┌──┸─┐ BNU
데이타베이스< ─┤ uucico   ├▒▒▒▒ ┤ uucico ├─> 데이타베이스
화일들          └─────┘         └────┘ 화일들



1.1 관리 프로그램

대부분의 관리 프로그램은 기본적인 네트워킹 쉘스크립트(일종의 쉘프로그램)
과 함께 /usr/bin/uucp 디렉토리내에 위치한다. 그러나 uulog라는 화일은
/usr/bin 디렉토리 속에 위치한다.

1.2 네트워킹 프로그램(이를 네트워킹 Daemon이라 한다. )

BNU는 세개의 Daemon을 가지고 있다. Daemon은 시스템상에서 보편화된 작업을
계속적으로 수행하기 위한 프로그램 형태를 말하며, 백그라운드 처리 방식으로
수행된다.

<uucico>
uucico Daemon은
네트웍 접속을 위해 이용되는 장비의 선택, 원격지 컴퓨터로의 연결
구축및 필요 로그일 절차및 접근권한 점검 수행, 화일 전송, 실행
결과 기록, 메일을통한 사용자로의 작업 완료 통보등을 수행한다.

<uuxqt>
원격지 실행 요구를 실행한다. uuxqt Daemon은 원격지 시스템으로 부터
수신된 X.file이라는 실행 화일의 존재를 확인하기 위해 스풀 디렉토리를
검색한다. 이때 이 화일이 발견되면, uuxqt Daemon은 이 실행요구를
실행하기 위해, 데이타 화일의 이용및 억세스 가능 여부를 확인하기
위한 점검을 수행한 후 해당 화일을 수행한다.

<uusched>
스풀 디렉토리내에 있는 큐(queue)처리된 작업을 스케쥴한다.

1.3 네트워킹 지원 화일

BNU는 3가지 유형의 지원 화일을 가지고 있다.

데이타베이스 데이타베이스 화일은 BNU 펙키지와 관련된 많은 실제
네트워킹 활동에 대한 책임을 진다. 이들 데이타베이스는
/etc/uucp 디렉토리내에 위치하고 있으며, 일반적으로
그들은 자체 컴퓨터와의 통신 대상, 통신을 지원하는
전송 장치및 원격지 컴퓨터와의 통신을 위한 프로토콜등을
결정하는 정보들을 갖고 있다. 그 화일들은 다음과 같다.

(Config)
BNU내에 있는 변동 가능한 파라메터들의 리스트를 포함한다.
관리자는 네트웍을 수작업으로 구성하기 위해 이들
파라메터를 설정할 수 있다.
(Devconfig)
이 화일은 TCP/IP 네트웍 또는 다른 Streams에 근거한
BNU의 네트웍 연결을 구성한다.
(Devices)
자동 호출기, 직접 연결및 네트웍 장치들의 위치및
회선 속도에 관한 정보를 포함한다.
(Dialers)
네트웍 장치및 자동 호출기및 직접 연결과의 통신을 위해
필요한 문자열을 포함한다.
(Grades)
이 화일은 작업 등급(작업의 우선 처리 순위)과 사용자가
원격지 컴퓨터에 작업을 큐(queue) 처리하기 위해 지정하는
각 작업 등급에 관련된 사항을 정의한다.
(Limits)
이 화일은 시스템상에서 허용되는 <uucicos>, <uuxqts>,
<uusched>의 최대 동시 실행 갯수를 정의한다.
(Permissions)
이 화일은 자체 컴퓨터 상에서 화일을 전송하거나
원격지 명령의 실행을 시도할때 컴퓨터에 허용된
허용 권한을 정의한다.
(Poll)
이 화일은 자체 시스템에 의해 호출될 컴퓨터및 호출시기를
정의하고 있다. 즉 원격지 컴퓨터를 폴링할 정보를 갖고 있다.
(Sysfiles)
이 화일은 <uucico>및 <cu>에의해 이용될 다른 또는 복수개의
화일을 <Systems>, <Devices> 및 <Dialers>화일로 지정한다.
(Systems)
원격지 컴퓨터와의 연결을 구축하기 위해 <uucico> Daemon및
<cu> 프로그램에 의해 요구되는 원격지 컴퓨터와 연관된
원격지 컴퓨터 명, 연결 장치명, 전화 번호 또는 네트웍
어드레스, login ID및 암호등의 정보를 포함한다.

관리 관리 화일은 장치 잠금, 임시 데이타 저장, 원격지 전송 또는
명령 실행에 관한 정보를 보관하기 위해 스풀 디렉토리 내에
네트웍 프로세스에 의해 생성된다.

(TM) 이들 데이타 화일은 다른 컴퓨터로부터 화일이 수신될 때
스풀(spool) 디렉토리밑에 기본적인 네트워킹 프로세스들에
의해 생성된다. 이 화일들은 /var/spool/uucp/X 밑에 생성
된다. X는 화일을 전송하는 원격지 시스템명으로 명명되는
디렉토리이다. 이 디렉토리들에 생성되는 화일의 명칭은
다음 양식을 갖는다.
TM.pid.ddd
여기서 pid는 프로세스 식별자이고, ddd는 0부터 시작하는
세자리의 숫자이다.
(Lock)
이들 Lock 화일은 이중적인 대화및 전송을 막아준다.
이 화일들의 이름은 LCK.system.grade라는 형식을 갖는다.
system은 원격지 시스템의 명칭이며, grade는 처리될
system_job_grade이다.
(LK)
이들 lock 화일은 호출하는 장치의 중복된 이용을 방지한다.
명칭의 형식은 LK.MAJ.maj.min으로 구성된다.
여기서 MAJ는 디렉토리 엔트리를 포함하는 장치의 메이저
번호이며, maj및 min은 각각의 장치 자체의 메이저및
마이너 번호이다.
(C.)
이 화일들은 화일전송 또는 원격지 명령 실행등과 같은
작업이 원격지 시스템에서 큐(queue) 처리될때, spool
디렉토리내에 생성된다. 각 화일의 이름은 다음과 같은
형식을 갖는다.
C.sysnxxxx
여기서 sys는 원격지 시스템 명이며, n은 작업 등급,
xxxx는 uucp에의해 지정되는 4자리 숫자의 일련번호이다.
(D)
이 화일은 원시 화일을 spool 디렉토리로 복제하기 위한
명령이 수행될때 생성된다. 이들 데이타 화일의 명칭은
다음과 같다.
D.systmxxxxyyy
여기서 systm은 원격지 시스템 명칭중 5자이며, xxxx는
uucp에의해 부여되는 4자리의 일련번호이며, yyy는 한 작업에
의해 복수개의 데이타 화일이 생성될 경우 이를 구분할
보조 일련번호이다.
(P)
이 화일들은 체크포인트 화일로서, 처리가 돌발적으로
종료될 때 생성된다. 이 화일을 이용하여 비정상적으로
전송이 종료된 작업을 재개시할 때 처음부터 화일을
재전송하는 것이 아니라, 전송되자 않은 부분부터
재전송을 수행한다. 체크 포인트 화일은 다음 명칭을 갖는다.
P.systmxxxxyyy
이 화일의 명칭 부여 형식은 D 화일과 같다.
(X)
이런 실행 화일은 명령 실행에 앞서 spool 디렉토리에
생성된다. 이들 화일의 명칭 구성은 다음과 같다.
X.systmxxxx이다.

로그 로그 화일은 컴퓨터의 전반적인, 특히 기밀및 계정 정보들을
보존한다.

---------------------------------------------------------------------------


BNU 네트웍 유티리티: uucp

BNU(Basic Networking Utilities): uucp
---------------------------------------------------------------------

직전의 강의에서는 BNU의 일반개요에 대해 설명됐다.
이번 강의부터는 BNU를 구성하고 있는 유틸리티들에 대해서 하나씩 설명된다.

1. uucp

uucp 유틸리티는 유닉스 시스템들간의 텍스트 화일과 바이너리 화일을 복사할
수 있는 기능을 제공한다. 또한 uucp는 데이타의 정확성을 기하기 위한
에러 검사 기능을 포함한 화일 전송, uucplog를 통하여 사용통계를 볼수 있는
기능, 시스템 상호간의 메일 분배및 보안 기능등을 제공한다.

┌─────────────────────────┐
│ uucp [-option] source_file destination_file      │
└─────────────────────────┘


uucp는 source_file로지정된 화일을 destination_file로 지정된 화일로
복사한다. 여기에서 source_file명은 다음과 같이 특정 시스템상의 화일을
지정할 수 있다.

system_name!pathname

그러나 system_name을 지정하지 않을 경우에는 현재 명령어를 입력하고
있는 시스템으로 가정된다. 그리고 system_name은 uucp가 인식하고 있는
시스템 명이어야 한다. 이와 마찬가지로 destination_file명도 다음과 같이
시스템 명을 함께 지정할 수 있다.

system_name!system_name!...!system_name!pathname

이 경우에, 화일을 목적지로 지정한 system_name들을 경유하여 보내지게 된다.

명령어 상에서 쉘 특수문자인 ?,*,[]와 같은 것들을 지정할 수 있다.

pathname은 다음과 같은 형식으로 지정할 수 있다.

1) 절대 경로명

2) ~user가 선행하는 경로명

이때의 user는 지정한 시스템상의 로그인 식별명이다.
이는 uucp명령어에 의해 해당 사용자의 홈 디렉토리로 대치된다.

3) ~/destination이 선행하는 경로명

이때의 destination은 /var/spool/uucppublic 디렉토리에 추가될
경로명을 표시한다. 주의할 것은 하나 이상의 화일이 이 요구에
의해서 전송된다 하더라도 또는 destination이 이미 존재하는
디렉토리라고 하더라도 destination은 화일명으로서 간주된다.
지정한 destination이 디렉토리라는 것을 보증하기 위해서는
/를 마지막에 지정해 준다. 예를들면 ~/dan/ 라고 지정하면
/var/spool/uucpublic 디렉토리내에 dan이라는 서브 디렉토리가
없다면 /var/spool/uucppublic/dan이라는 서브 디렉토리를 생성하고,
그 디렉토리에 요구된 화일을 저장한다.

4) 아무것도 지정하지 않은 경우

사용자가 작업하고 있는 디렉토리의 경로명이 가정된다.

만일 원격지 시스템에 대해서 잘못된 경로명을 지정하면, 복사 작업은
실패한다. 또한 destination_file이 디렉토리일 경우에는, source_file의
마지막 부분이 화일명으로 사용된다.

uucp는 전송 과정에서 실행 권한이 삭제하고, 읽기및 쓰기 권한을 0666으로
부여한다. [ chmod 명령을 참조하기 바란다. ]

다음은 uucp 명령에서 사용가능한 옵션들에 대한 설명이다.

-c 원격지 시스템에 전송을 하기위하여 스풀(spool) 디렉토리에
복사를 하지마라.

-C 전송을 위해 스풀 디렉토리에 화일을 무조건 복사한다.


-d 화일 복사시 필요로하는 모든 디렉토리들을 만든다.

-f 화일 복사를 위해 중간의 디렉토리들을 만들지 않는다.

-ggrade grade는 서비스 등급을 정의하는 서비스 등급을 정의하는
단일 문자/숫자 또는 영숫자의 문자열일수 있다.
서비스 등급으로써 단일 문자/숫자 또는 영숫자의 문자열을
사용하는 것이 적당한 것인지를 uuglist 명령어를 통해 확인할
수 있다. uuglist 명령어를 실행하면 지정 가능한
서비스 등급들을 나타내는 필드들이 표시된다.

-j 표준 출력상에 uucp 작업 식별 문자열을 출력한다.
이런 작업 식별자는 uucp 작업의 상태나 uucp 작업을 종료하기
위해서 uustat 명령어에 의해 사용될 수 있다. 이 식별자는
자체 시스템상에 작업이 큐(queue)되어 있는 동안에만 유효하다.

-m 복사가 완료되면 명령어 실행자에게 완료 통보 메일을 보낸다.

-nuser 화일을 보낸 원격지 시스템상의 사용자에게 통보한다.

-r 화일 전송을 시작하지 않고, 작업을 큐에 등록만 한다.

-sfile 지정한 화일에 전송상태를 보고한다. 이 옵션은 -m 옵션에 우선한다.

-xdebug_level
표준 출력상에 디버깅 출력(debugging output)을 생성한다.
검증 레벨은 0과 9사이의 숫자이다. 보다 자세한 검증을 수행하기
위해서는 9에 가까운 숫자를 지정한다. 그러나 이 옵션은
일부 시스템은 허용하지 않는다.

---------------------------------------------------------------------------


BNU 네트웍 유틸리티: uname,uuname,uulog

BNU(Basic Networking Utilities): uname, uuname, uulog
---------------------------------------------------------------------

1. uname

uname 현재 작업중인 유닉스 시스템의 이름을 프린트한다.

┌──────────┐
│ uname [-option]    │
└──────────┘


uname 명령은 유닉스 시스템 이름을 표준 출력 장치(스크린)상에
프린트 한다. 이 명령은 사용중인 시스템을 확인하기 위해 주로 사용한다.
uname 명령에서 사용 가능한 옵션은 다음과 같다.

-a 모든 정보를 프린트한다. 이 옵션에 의한 출력은 다음과 같이 구성된다.
┌───────────────────────────────┐
│system_name nodename release version machine hostprocessor    │
└───────────────────────────────┘

-m 시스템 하드웨어 이름을 프린트 한다.
-n nodename을 프린트 한다.
(nodename은 통신 네트웍상에 등록된 시스템 이름이다.)

-p 현재 작업중인 시스템의 프로세서 종류를 프린트 한다.

-r 운영체제 릴리즈(release)를 프린트 한다.

-s 운영체제의 이름을 프린트 한다. ( 예를들면 UNIX System V )
이 옵션은 디폴트 옵션이다.

-v 운영체제 버전을 프린트 한다.

-S nodename을 프린트 한다. nodename은 SYS_NMLN 문자들로 제한된다.
SYS_NMLN은 sys/utsname.h에 정의된 한정된 값이다.
특권이 부여된 사용자만이 이 기능을 수행할 수 있다.

-S 옵션을 사용하여 운영체제의 이름을 또한 변경할 수 있다.

( 예제 )
┌─────┐ ┌─────┐ ┌─────┐
│$uname -a │ │$uname -n │ │$uname -s │
└─────┘ └─────┘ └─────┘


2. uuname

┌────────────┐
│ uuname [-option]       │
└────────────┘


uuname 명령은 uucp에 등록된 시스템 이름들을 출력해 준다.
uuname 명령에 사용 가능한 옵션은 다음과 같다.

-c cu 유틸리티에 등록된 시스템의 이름들을 돌려준다.
( 시스템이 cu와 uucp 유틸리티에 대하여 다른 Systems 화일을
사용하는 경우를 사용중인 경우를 제외하고는 이들 두가지의
출력이 동일하다. )

-l 현재 시스템 이름을 표시해 준다.

( 예제 )
┌─────┐ ┌──────┐
│ $uuname  │ │ $uuname -l │
│ mart     │ │ wjnr       │
│ wopper   │ └──────┘
│ tower    │
└─────┘


3. uulog

┌───────────┐
│ uulog [-option]      │
└───────────┘


uulog 명령어는 /var/uucp/.Log/uucico/system 화일이나
/var/uucp/.Log/uuxqt/system 화일에서 uucp 또는 uuxqt 트렌젝션의 로그화일
(작업 내력등을 저장하고 있는 화일) 내용을 확인한다.

uulog 명령어에서는 로그 정보를 프린트하기 위해
다음과 같은 옵션을 사용 가능하다.

-ssys 시스템 sys를 수반한 화일 전송 작업에 관한 정보를 프린트한다.

-fsystem 지정한 system에 대한 화일 전송 로그에대해 tail -f 명령을
실행한다. ( 이 명령을 종료하기 위해서는 Break 키를 사용한다. )

┌───────────────────────────────┐
│< tail 명령어 >                                               │
│                                                              │
│ 화일의 특정 내용을 화면상에 출력하기 위한 명령어로           │
│ 그 형식은 다음과 같다.                                       │
│                                                              │
│ $tail [+-[숫자]] [화일명]                                    │
│                                                              │
│ 여기에서 +는 처음부터 몇 라인을                              │
│ -는 끝부터 몇 라인을 의미한다.                               │
│ 또한 숫자는 표시할 라인수를 의미한다.                        │
└───────────────────────────────┘


또한 위의 옵션과 접속해서 사용할 수 있는 아래와 같은 다른 옵션도 있다.

-x 주어진 시스템에 대한 uuxqt 로그 화일의 내용을 조사한다.

-number 실행해야할 tail 명령어의 라인 수를 지정한다.

---------------------------------------------------------------------------


BNU 네트웍 유틸리티: uuto,uupick

BNU(Basic Networking Utilities): uuto, uupick
---------------------------------------------------------------------

1. uuto

┌───────────────────┐
│ uuto [-option] source destination    │
└───────────────────┘


uuto 유틸리티는 source 화일을 destination에 전송한다. uuto는
화일을 전송하기 위해 uucp 기능들을 이용하지만, local 시스템이
화일 억세스를 제어하는 것을 허용한다. source는 시스템상의 경로명이다.
그리고 destination은 다음 형식을 갖는다.

system[!system]...!user

여기에서 system은 uucp에 등록되어 있는 시스템 명들을 지정한다.
(uuname으로 확인 가능하다.) 그리고 user는 지정한 시스템상에
등록된 사용자의 로그인 명이다.

uuto에는 다음 옵션이 사용 가능하다.

-p 전송을 하기전에 스풀(spool) 디렉토리에 source 화일을 복사한다.

-m 복사가 완료되면, 송신자에게 송신 완료 통지 메일을 보낸다.

송신된 화일들은 시스템상에서 uucp의 공유 디렉토리인 PUBDIR에 보내진다.
기본적인 이 디렉토리는 /var/spool/uucppublic이다. 정확하게 말하자면
송신된 화일들은 PUBDIR/receive/user/mysystem/files라는 형식으로
생성된다.

화일을 수신 완료하면 화일의 도착을 메일을 통해 해당 사용자에게 알려준다.

( 예제 )

$uuto -m employees sys4!user

2. uupick

┌──────────┐
│uupick [-s system]  │
└──────────┘


uupick 명령어는 사용자에게 전송된 화일을 받아들이거나 거절한다.
자세히 설명하자면, uupick 명령어는 사용자에게 도착한 화일을 PUBDIR
디렉토리들을 검색한다. 사용자에 수신된 화일 또는 디렉토리가 발견되면,
다음과 같은 메세지가 화면상에 표시된다.

from system sysname: [file file_name] [dir dirname] ?

uupick는 그때 화일의 배치를 결정하기 위해 단말로 부터 라인을 입력 받는다.

<new-line> 다음 엔트리로 이동한다.
d 엔트리를 삭제한다.
m [dir] 지정한 디렉토리 dir에 엔트리를 이동한다. 만일 dir을
지정할때 절대 경로명을 지정하지 않을 경우에는
현재의 작업 디렉토리가 가정된다. ( $HOME 쉘 변수도 사용
가능하다.) 또한 destination 자체를 지정하지 않았을
경우에도 현재의 작업 디렉토리가 가정된다.
a [dir] 시스템으로부터 보내온 모든 화일을 이동하는 것을
제외하고는 m [dir]과 같다.
p 화일의 내용을 프린트 한다.
q 작업을 중지한다.
EOT (CTRL-d) q와 동일하다.
!command 명령어를 실행하기 위해 쉘로 일시적으로 빠져나간다.
* 사용가능한 명령어의 요약 사항을 프린트 한다.

특정 시스템으로 부터 보내진 화일에 대한 PUBDIR을 검색하는 경우에만
-s system 옵션을 사용한다.

주의 사항) .으로 시작하는 화일을 전송하기 위해서는 화일명에
반드시 .을 지정해야만 한다. 예를들면 다음과 같다.

.profile
.prof*
.profil?라는

형식으로 지정해야 한다. 그러나 다음과 같은 형식의 지정은
잘못된 것이다.

*prof*
?profile

( 예제 )

$uupick -ssys2



'Academy I > Tech Academy' 카테고리의 다른 글

Unix 9 본쉘, 콘쉘  (0) 2014.12.04
Unix 8 쉘프로그래밍  (0) 2014.12.04
Unix 7 프로세스, 쉘  (0) 2014.12.04
Unix 6 유틸리티  (0) 2014.12.04
Unix 4 검색과 권한  (0) 2014.12.04
Unix 3 관리명령어 일반  (0) 2014.12.04
Unix 2 계층구조, 파일, 디렉토리  (0) 2014.12.04
Unix 1 역사,구성,특징  (0) 2014.12.04