Раздел 9

ПЕРЕДАЧА СООБЩЕНИЙ В ОС UNIX

Обзор

Этот раздел рассматривает способы обмена почтой и файлами с пользователями на других системах UNIX. Команды, включенные в этот раздел это uname, uuname, uuencode, uudecode, cu, put и take.

ЦЕЛИ

    1. Создать файл .mailrc, чтобы повторно пересылать почту пользователям по списку входных имен.
    2. Определить имя узла вашей системы с помощью команды
    uname.
    3. Использовать команду uuname, чтобы определить имя узла удаленной систем, которой вы хотите передать сообщение.
    4. Послать почту для пользователя на другой системе
    UNIX
    5. Послать не-ascii файл пользователю на другой системе UNIX с помощью команды uuencode.
    6. Расшифровать конвертированный файл обратно в не-ascii файл с помощью команды uudecode.
    7. Войти в другую систему с помощью команды cu.
    8. Перенести файлы, используя команды put и take.

Использование псевдонимов групп с командой mailx

Если вы постоянно посылаете сообщения одной и той же группе пользователей, то можно использовать псевдоним группа для сокращения набора на клавиатуре списка входных имен адресатов. Псевдоним группы это имя, которое представляет список входных имен. Чтобы определить псевдоним группы, создайте файл с именем .mailrc в вашем входном каталоге. Файл .mailrc содержит определения персональных параметров и переменных, используемые mailx. Там также находится файл системных установок для mailx (/var/lib/mailx/mailx.rc), где администратор системы устанавливает параметры и определения переменных для каждого, использующего mailx. Ниже приведен образец файла .mailrc:

group docs jwh ep jrs liz

set metoo (меня тоже)

set dot (установить точку)

Строка 1. Она определяет псевдоним группы с именем docs. Где бы ни использовался docs как параметр в командной строке mailx, он представляет входные имена jwh, ep, jrs и liz.

Строка 2. Позволяет вашему входному имени появиться в командной строке .mailx, если вы хотите послать сообщение самому себе.

Строка 3. По умолчанию, только <CTRL/d> посылает сообщение .mailx. Строка set dot позволяет также использовать для передачи сообщения строку ".<RET> ". Если эта установка отсутствует в системном установочном файле, вы можете пожелать добавить эту строку в ваш файл .mailrc.

Обратитесь к User Reference Manual (Справочное руководство пользователя) для более полной информации о параметрах и установках переменных для mailx.

Использование псевдонимов групп с командой mailx

ПРИМЕР 1: Создание псевдонимов группы и файла .mailrc

$ cd<RET>

$ vi .mailrc<RET>

agroup class stu___stu___stu___stu___stu___slf<RET>

set metoo<RET>

set dot<ESC>

:wq<RET>

ПРИМЕР 2: Пересылка файлов, используя псевдонимы групп

$ cd unit9<RET>

$ mailx class slf < test1<RET>

$ mailx<RET>

mailx version 4.0 Type ? for help.

"/var/mail/slf": 1 message 1 new

>N 1 slf Tue Oct 18 16:42 8/153

? 1<RET>

Message 1:

From slf Tue Oct 18 16:42 EDT 1989

To: stu___stu___stu___stu___stu___slf

Content-Type: text

Content-Length: 32

Status: R

Good Morning. This is a test!

? d

? q

$

Определение имени узла вашей системы

Локальная и удаленная системы.

В этом разделе часто используются термины локальная система и удаленная система. Под системой понимается отдельная ЭВМ с установленной на ней ОС UNIX. На систему, в которую вы вошли, ссылаются как на локальную систему. Другая система, с которой вы хотите связаться (по каким-то линиям связи), называется удаленной системой. Например вы вошли в систему anton, которая для вас будет локальной системой. Вы хотите послать файл из системы anton в систему ludwig; ludwig это удаленная система.

uname,uuname -a

Первый шаг для связи с пользователем на удаленной системе - найти имя узла системы этого пользователя. Имя узла это имя системы, используемое для связи с другими системами.

Вы можете определить имя узла системы, на которой вы работаете, выполняя команду uname. Команда uname без опций выдает имя узла вашей системы.

Опция -a команды uname выдает следующую информацию.

имя системы имя вышей системы

имя узла Система определяется с сети связи по имени ее узла. Часто имя системы и имя узла совпадают.

номер выпуска Номер выпуска математического обеспечения ОС UNIX

номер версии Номер версии выпуска математического обеспечения системы ОС UNIX

тип компьютера Тип компьютера на котором вы работаете

Например: $ uname -a <RET>

anton anton 3.1.1. 3 3B2

ОПРЕДЕЛЕНИЕ ИМЕНИ УЗЛА
ВАШЕЙ СИСТЕМЫ

ПРИМЕР 1:

$ uname<RET>

anton

$

ПРИМЕР 2:

$ uname -a<RET>

anton anton 3.1.1 3 3B2

$

Посылка почты пользователю удаленной системы

Чтобы определить может ли ваша система связываться с определенной удаленной системой, выполните команду uuname. Эта команда выводит список имен узлов всех остальных систем UNIX, к которым ваша система может иметь доступ. Вы можете непосредственно связываться с системами, приведенными в списке.

Чтобы послать почту пользователю на удаленной системе, отделите имя узла от идентификатора пользователя восклицательным знаком (!).

Если вы ищете имя узла определенной системы, и его не было в списке uuname, вам нужно найти имя узла общее с этой системой. Вы можете связаться с нужной удаленной системой через общую систему.

Например, предположим, что вы хотите послать почту пользователю jim в систему ludwig. Тем не менее эта система отсутствует в списке uuname. При этом и вы и пользователь jim должны использовать команду uuname каждый на своей системе и найти общую. Предположим, что система aaron появляется в обеих списках. Вы можете послать почту в систему ludwig через систему aaron.

Когда вы посылаете почту через общую систему(ы), вы должны отделять имена узлов восклицательным знаком.

Если вы не можете найти общую машину, попросите администратора системы добавить в сеть имя машины с которой вы хотите поддерживать связь.

Если связь должна осуществляться через одну или несколько промежуточных машин, прохождение почты занимает несколько больше времени.

Иногда, вы можете получить почту с узла, появляющегося в списке uuname, но вы не можете послать почту пользователям этой системы. В этом случае обратитесь к администратору.

ПОСЫЛКА ПОЧТЫ
ПОЛЬЗОВАТЕЛЮ УДАЛЕННОЙ СИСТЕМЫ

ПРИМЕР 1:

$ uuname<RET>

aaron

johann

frantz

sergei

wolfgang

ПРИМЕР 2:

$ mailx aaron!sam<RET>

Subject: Requested documents<RET>

The documents you requested are in the mail.<RET>

<CTRL/d>

$

ПРИМЕР 3:

$ mailx aaron!ludwig!jim<RET>

Subject: Requested documents<RET>

The documents you requested are in the mail.<RET>

<CTRL/d>

$

Пересылка НЕ-ASCII файла на удаленную систему

Команда mailx посылает копии ASCII файлов на удаленную систему UNIX. Чтобы послать копию не-ASCII файла вы должны сначала использовать команду uuencode. Команда uuencode конвертирует бинарный файл в представление кода ASCII которое вы затем и посылаете командой mailx.

ФОРМАТ

uuencode исходный_файл метка_файла > имя_файла

Исходный_файл это имя не-ASCII файла, который вы хотите конвертировать

Метка_файла это имя для конвертируемой информации. Система добавляет заголовок, записывая метку_файла в конвертированную информацию. Метка_файла это предполагаемое имя для дешифрованного файла. Имя_файла может иметь то же имя, что и исходный_файл.

По умолчанию конвертированная информация отображается как стандартный вывод на экране терминала. Чтобы сохранить конвертированную информацию, вы должны перенаправить ее в файл с именем имя_файла.

Пример на развороте показывает как пользователь системы anton шифрует команду echo, затем посылает зашифрованный файл пользователю lvb в систему ludwig.

ДЕШИФРОВАНИЕ ФАЙЛОВ С ПОМОЩЬЮ uudecode

Полученную почту пользователь может обработать командой mailx. Если необходимо, вы можете дешифровать конвертированный файл в не-ASCII файл с помощью команды uudecode. Команда uudecode создает новый не-ASCII файл с именем метка_файла, выбранным создателем.

ФОРМАТ

uudecode шифрованный_файл

В примере 2 на развороте, пользователь lvb в системе ludwig использует команду uudecode, чтобы расшифровать команду echo, полученную из системы anton.

Ранние выпуски системы UNIX не включают возможности uuencode и uudecode. Чтобы послать не-ASCII файл требуется команда uuto, которая посылает файл в общий каталог. После получения почты, используется команда uupick, для обработки файла. Для более подробной информации обратитесь к User Reference Manual (Справочное руководство пользователя).

ПЕРЕСЫЛКА НЕ-ASCII ФАЙЛА

uuencode исходный_файл метка_файла > имя_файла

uudecode шифрованный_файл

ПРИМЕР 1:

$ cp /usr/bin/echo .<RET>

$ file echo<RET>

echo: ELF 32-bit MSB executable WE32100 Version 1

$ uuencode echo enc.echo > myecho<RET>

$ file myecho<RET>

myecho: ascii text

$ mailx ludwig!lvb < myecho<RET>

$

ПРИМЕР 2:

$ mailx<RET>

mailx version 4.0 Type ? for help.

"/var/mail/lvb": 1 message 1 new

>N 1 anton!slf Thu Nov 17 11:00 157/9254

? s repeat<RET>

"repeat" [New File] 157/9254

? q

$

ПРИМЕР 3:

$ head -5 repeat<RET>

From anton!slf Thu Nov 17 11:49 EDT 1990

To: ludwig!lvb

Content-Type: text

Content-Length: 9169

begin 555 enc.echo

$ uudecode repeat<RET>

$ file enc.echo repeat<RET>

enc.echo: ELF 32-bit MSB executable WE32100 Version 1

repeat: ascii text

$ enc.echo hello<RET>

hello

$

Вход в другую систему с помощью команды cu

Если вы имеете входные имена в нескольких системах UNIX, вы можете вызывать и входить в одну из них в течении сеанса в вашей локальной системе. Команда cu (вызвать систему UNIX), используется для вызова другой системы UNIX. Использование команды cu часто ограничено и допускается только для членов особой группы. Если вам нужно вызывать удаленные системы UNIX, попросите администратора добавить ваше входное имя в желаемую группу, которая имеет полномочия использовать cu. Используя cu, можно войти даже в не-UNIX систему (обратитесь к страницам руководства для информации о необходимых опциях).

Если вашей локальной системе известно имя узла, который вы хотите вызвать, вы можете использовать имя узла системы приемника как аргумент команды cu. Пример 1 на развороте демонстрирует как пользователь использует команду cu, чтобы войти в систему johann из системы ludwig.

Если системе не известно имя узла системы приемника, то вы можете указать номер телефона удаленной машины вместе со скоростью модема. Опция -s команды cu должна использоваться для определения скорости модема.

Пример 2 на развороте демонстрирует как пользователь применяет команду cu, чтобы войти в систему johann из системы ludwig с помощью номера телефона. Скорость 4800 бод определена с помощью опции -s. Опция 9= определяет, что вызывается внешняя система и что локальной системе следует ожидать второго тонального сигнала набора. Дефисы в номере телефона необязательны. После ввода команды cu и <RET>, быть отображена некоторая информация о наборе. Если соединение состоялось, на экране должно появиться слово connected (соединились) и следующая за ним подсказка login:.

Первая система в которую вошел пользователь называется локальной системой; вторая система (система доступная через cu) называется удаленной системой. Чтобы выполнить команду на удаленной системе, просто наберите командную строку. Чтобы выполнить команду в локальной системе предварите команду знаками ~! (тильда и восклицательный знак). После ввода ~! текст [система], где система это имя локальной системы, отображается автоматически.

ВХОД В ДРУГУЮ СИСТЕМУ
С ПОМОЩЬЮ КОМАНДЫ
cu

ПРИМЕР 1:

$ uname<RET>

ludwig

$ uuname<RET>

aaron

johann

$ cu johann<RET>

Connected <RET>

login:

ПРИМЕР 2:

$ uname<RET>

ludwig

$ cu -s4800 9=1415-555-1212<RET>

Connected<RET>

login:

Вход в другую систему с помощью команды cu (продолжение)

Пример 3 демонстрирует как пользователь входит в систему johann из системы ludwig. Когда в системе johann вводится комбинация ~! в системе отображается ~[ludwig]. Команда uuname выполняется в системе ludwig. После того, как одна команда выполнена в локальной системе (ludwig), управление автоматически возвращается в систему johann.

Когда вы готовы отсоединиться от отдаленной системы, введите ~. (знак тильда и знак точка), как показано в примере 4.

Для обзора: В ответ на символ Отображается

~! [локальная система]!

. [локальная система].

Disconnected

$

ВХОД В ДРУГУЮ СИСТЕМУ С ПОМОЩЬЮ КОМАНДЫ cu (ПРОДОЛЖЕНИЕ)

ПРИМЕР 3:

$ uname<RET>

johann <-remote system (УДАЛЕННАЯ СИСТЕМА)

$ ls<RET>

remote1 remote2 remote3 remote4

$ ~[ludwig]! ls<RET>

bin fun numbers seepath unit4 unit7

books groceries oneline single unit5 unit8

calendar lunchfile perm unit10 unit6 unit9

echoit names phone unit3 unit6old

!

(continue)<RET>

$ ls<RET>

remote1 remote2 remote3 remote4

ПРИМЕР 4:

$ uname<RET>

johann

$ ~[ludwig].<RET>

Disconnected

$ uname<RET>

ludwig

$

Копирование файлов с помощью команд put и take

При работе на двух системах (ЭВМ) есть другой метод передачи файлов между системами - использование команд take и put. Эти команды передают файлы ASCII. Бинарные файлы следует копировать в другую систему, используя команду uuto. Обратитесь к User Reference Manual (Справочное руководство пользователя) для более полной информации.

Команда take копирует файлы из удаленной системы в локальную.

ФОРМАТ:

$ ~%take из_файла [в_файл] <RET>

Если в_файл пропущено, используется из_файла по умолчанию. Когда вы вводите ~%, система отображает ~[имя_локального_узла]%.

В примере 1, пользователь входит в систему ludwig и затем переходит с помощью команды cu в систему johann. Файл jofile1 копируется из системы johann в файл ludfile1 в системе ludwig. Команда take выводит некоторую информацию, последняя стока представляет число строк и символов передаваемых в локальную систему.

Команда put копирует файл из локальной системы в удаленную.

ФОРМАТ:

$ ~%put из_файла [в_файл] <RET>

Если в_файл пропущено, используется из_файла по умолчанию. Когда вы вводите ~%, система отображает ~[имя_локального_узла]%.

В примере 2, пользователь входит в систему ludwig и затем переходит в удаленую систему johann. Файл ludfile2 копируется из системы luwig в файл с именем jofile2 системы johann. Команда put также отображает некоторую информацию, последняя строка содержит число строк и символов, посланных в локальную систему.

Команды put и take не являются командами ОС UNIX. Они являются подкомандами команды cu и описываются вместе с ней в справочном руководстве.

КОПИРОВАНИЕ ФАЙЛОВ
С ПОМОЩЬЮ КОМАНД
put И take

ФОРМАТ:

$ ~%take из_файла [в_файл] <RET>

$ ~%put из_файла [в_файл] <RET>

ПРИМЕР 1: Вы вошли из своей системы в удаленную систему johann

$ ~[ludwig]%take jofile1 ludfile1<RET>

stty -echo; test -r ...:ludfile1

+

~ >

16 lines/482 characters

$

ПРИМЕР 2: Вы вошли из своей системы в удаленную систему johann

$ ~[ludwig]%put ludfile2 jofile2<RET>

stty -echo; (cat - > jofile2) ... stty echo

+

14 lines/188 characters

$

Выводы и упражнения

Выводы урока

Создать файла .mailrc для повторяющейся посылки почты группе пользователей

Определить имя узла вашей системы

unamebr
-
uuname -a дает дополнительную информацию о вашем узле
Получить список имен систем связанных в сеть с вашей системой с помощью команды uuname.
Послать почту пользователю на отдаленном узле с помощью mailx
Послать не-ascii файл на удаленную систему с помощью команды uuencode
помощью команды uudecode
Войти в систему с помощью команды cu cu по имени узла
cu со скоростью передачи и номером телефона, опция -s.
Во время нахождения в удаленной системе, скопировать файлы из удаленной системы в локальную систему с помощью take
Во время нахождения в удаленной системе, скопировать файлы из локальной системы в удаленую систему с помощью put

Упражнение 9.1.А

Следующие упражнения выполняются при наличии второй системы UNIX.

Сделайте текущим на вашей локальной системе каталог unit9.

1. Определите имя узла системы, в которой вы находитесь?

Имя узла:

2. Получите имя узла удаленной системы, с которой вы будете работать в этом упражнении.

Имя узла удаленной системы:

3. Имя удаленной системы это номер 2 из списка систем с которыми вы можете устанавливать связь?

4. Получите идентификатор пользователя и пароль для удаленной системы от вашего преподавателя.

идентификатор удаленного пользователя

удаленный пароль

5. Отправьте почтовое сообщение "Hello out there" на свой идентификатор удаленного пользователя.

6. Создайте псевдоним группы reporters и пошлите почтовое сообщение "Anything new to report" (Нет ничего нового) двум товарищам по классу и на свой идентификатор удаленного пользователя.

7. В каталоге $HOME/unit9 находится не-ascii файл weather. Отправьте этот файл на свой идентификатор удаленного пользователя, используя uuencode.

8. Убедитесь вместе с вашим преподавателем, что вы имеете необходимую информацию, чтобы вызвать удаленную систему и войти в нее. Нужная вам информация: идентификатор пользователя, пароль и подтверждение наличия необходимых базовых аппаратных и программных сетевых средств на локальной и удаленной системах.

ИЛИ

номер телефона и скорость линии удаленной системы.

9. Вызовите удаленную систему и войдите в нее. (упражнения с 10 по 14 выполняются, пока находитесь в удаленной системе)

10. Прочтите вашу почту. Получили ли вы почтовое сообщение "Hello out  there", которое послали раньше. Сохраните посланный ранее файл weather в  файле degrees.

11. Используя uudecode, конвертируйте файл degrees в не-ascii файл.

12. Используйте put и take в этом упражнении.

Пока вы находитесь в удаленной системе, перешлите файл mail.list из  каталога $HOME/unit9 в локальной системе в ваш каталог $HOME на удаленной  системе.

Создайте файл from.file на удаленной системе. Файл from.file должен  содержать сообщение : "Это сообщение из $LOGNAME в систему 'uuname'", где  $LOGNAME это ваш идентификатор пользователя и 'uname' имя узла удаленной  системы

 Перешлите файл from.file из удаленной системы в локальную.

13. Не выходя из удаленной системы, выйдите из локальной, чтобы выполнить команду  ls -l и проверить достиг ли файл from.file локальной системы.

14. Выйдите из удаленной системы.