Solaris のシステム管理 (ネットワークサービス)

UUCP /etc/uucp/Systems ファイル

/etc/uucp/Systems ファイルには、uucico デーモンがリモートコンピュータとの通信リンクを確立するために必要な情報が入っています。/etc/uucp/Systems は、UUCP を構成するときに編集しなければならない最初のファイルです。

Systems ファイルの中の各エントリは、このホストが通信するリモートコンピュータを表します。1 つのホストについて複数のエントリがある場合もあります。付加的なエントリは、順番に試される代替通信パスを表します。さらに、UUCP のデフォルト状態では、/etc/uucp/Systems ファイルに含まれていないコンピュータがこのホストにログインできないようになっています。

Sysfiles ファイルを使用して、Systems ファイルとして使用されるファイルをいくつか定義できます。Sysfiles の詳細は、「UUCP /etc/uucp/Sysfiles ファイル」を参照してください。

Systems ファイルのエントリの形式は次のとおりです。


System-Name    Time    Type    Speed    Phone    Chat Script

次に、Systems ファイルのエントリ例を示します。


例 26–1 /etc/uucp/Systems のエントリ


Arabian     Any  ACUEC 38400 111222  ogin: Puucp ssword:beledi

Arabian

System-Name フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの System-Name フィールド」を参照

Any

Time フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの Time フィールド」を参照

ACUEC

Type フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの Type フィールド」を参照

38400

Speed フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの Speed フィールド」を参照

111222

Phone フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの Phone フィールド」を参照

ogin: Puucp ssword:beledi

Chat Script フィールドのエントリ。詳細は、/etc/uucp/Systems ファイルの Chat-Script フィールド」を参照

/etc/uucp/Systems ファイルの System-Name フィールド

このフィールドには、リモートコンピュータのノード名が入ります。TCP/IP ネットワークでは、この名前は、マシンのホスト名でも、/etc/uucp/Sysname ファイルによって UUCP 通信用として特別に作成した名前でもかまいません。「UUCP /etc/uucp/Systems ファイル」を参照してください。例 26–1 では、System-Name フィールドにはリモートホスト Arabian に関するエントリが含まれています。

/etc/uucp/Systems ファイルの Time フィールド

このフィールドには、リモートコンピュータを呼び出すことのできる曜日と時刻を指定します。Time フィールドの形式は次のとおりです。

daytime[;retry]

Time フィールドの day

day の部分には、次のエントリのいくつかを含むリストを指定できます。

Su Mo Tu We Th Fr Sa

個々の曜日

Wk

任意の平日

Any

任意の日

Never

このホストはこのリモートコンピュータの呼び出しをいっさい行わない。呼び出しはリモートコンピュータ側から行う必要がある。それを受けて、このホストは「受動モード」で稼動する

Time フィールドの time

例 26–1 では、Time フィールドに Any が示されています。これは、ホスト Arabian をいつでも呼び出せるということです。

time の部分には、24 時間表記で表した時間の範囲を指定します。たとえば、午前 8 時 00 分から午後 12 時 30 分までなら 0800-1230 とします。time の部分を指定しなかった場合は、どのような時刻にでも呼び出しができるものとみなされます。

0000 の前後にまたがる時間範囲も指定できます。たとえば、0800-0600 は、午前 6 時から午前 8 時までの間を除くすべての時間帯で呼び出し可能であることを示します。

Time フィールドの retry

retry サブフィールドには、試行が失敗してから次の再試行までの間に最小限必要な時間 (分単位) を指定できます。デフォルトの待ち時間は 60 分です。サブフィールド区切り文字はセミコロン (;) です。たとえば、Any;9 は、呼び出しはいつでもできるが、失敗したときは次の再試行までに少なくとも 9 分は待たなければならないことを意味します。

retry エントリを指定しなかった場合は、待ち時間倍加アルゴリズムが使用されます。これは、UUCP がデフォルトの待ち時間から始めて、失敗した試行の回数が増えるほど待ち時間を長くしていくことを意味します。たとえば、最初の再試行待ち時間が 5 分であるとします。応答がない場合は、次の再試行は 10 分後となります。次の再試行は 20 分後というようになり、最大再試行時間の 23 時間に達するまで増加します。retry を指定した場合は、常にその値が再試行待ち時間となります。指定がなければ待ち時間倍加アルゴリズムが使用されます。

/etc/uucp/Systems ファイルの Type フィールド

このフィールドには、リモートコンピュータとの通信リンクを確立するために使用するデバイスタイプを指定します。このフィールドで使用するキーワードは、Devices ファイル中のエントリの最初のフィールドと突き合わされます。


例 26–2 Type フィールドのキーワード


Arabian    Any    ACUEC, g    38400    1112222    ogin: Puucp ssword:beledi

Type フィールドでは、さらに、システムとの接続に使用するプロトコルを定義できます。上記の例では、デバイスタイプ ACUECg プロトコルを組み合わせる方法を示しています。プロトコルの詳細は、/etc/uucp/Devices ファイル内のプロトコル定義」を参照してください。

/etc/uucp/Systems ファイルの Speed フィールド

このフィールド (Class フィールドとも呼ばれます) は、通信リンクの確立に使用するデバイスの転送速度を指定します。UUCP speed フィールドには、ダイアラのクラスを区別するために、1 個の英字と速度を含めることができます (たとえば C1200D1200)。/etc/uucp/Devices ファイルの Class フィールド」を参照してください。

デバイスにはどのような速度でも使用できるものがあり、その場合はキーワード Any を使用できます。このフィールドは、Devices ファイルの対応するエントリの Class フィールドに一致していなければなりません。


例 26–3 Speed フィールドのエントリ


eagle    Any    ACU, g    D1200    NY3251    ogin: nuucp ssword:Oakgrass

このフィールドに情報を入れる必要がない場合は、フィールドの数を合わせるためにダッシュ (-) を指定してください。

/etc/uucp/Systems ファイルの Phone フィールド

このフィールドには、自動ダイアラ (ポートセレクタ) に与えるリモートコンピュータの電話番号 (トークン) を指定できます。電話番号は、オプションの英字による省略名と数字部分で構成されます。省略名を使用する場合は、Dialcodes ファイル内に列挙されているものの 1 つでなければなりません。


例 26–4 Phone フィールドのエントリ


nubian    Any    ACU       2400    NY555-1212    ogin: Puucp ssword:Passuan
eagle     Any    ACU, g    D1200   NY=3251       ogin: nuucp ssword:Oakgrass

Phone フィールドでは、等号 (=) は二次発信音を待ってから残りの数字をダイアルするという ACU への指示となります。文字列の中にダッシュ (-) があれば、4 秒間待ってから次の数字をダイアルするという指示になります。

コンピュータがポートセレクタに接続されている場合は、そのセレクタに接続しているほかのコンピュータにアクセスできます。この種のリモートマシン用の Systems ファイルエントリの Phone フィールドには、電話番号を入れません。代わりに、このフィールドにはスイッチに渡すトークンを指定します。このようにすれば、このホストがどのリモートマシンとの通信を望んでいるかを、ポートセレクタが判断できます。この場合は、システム名だけを指定するのが普通です。対応する Devices ファイルエントリでは、エントリの末尾に \D を指定して、このフィールドが Dialcode ファイルを使用して解釈されないようにしなければなりません。

/etc/uucp/Systems ファイルの Chat-Script フィールド

このフィールド (Login フィールドとも呼ばれる) には、「chat スクリプト」と呼ばれる文字列が入ります。chat スクリプトには、ローカルマシンとリモートマシンが対話の最初の時点で互いに受け渡ししなければならない文字が含まれています。chat スクリプトの形式は次のとおりです。

expect send [expect send] ....

expect は、対話を開始するために、ローカルホストがリモートホストから受信することを想定している文字列です。send は、ローカルホストが、リモートホストからの expect 文字列を受信したあとで送信する文字列です。chat スクリプトには、複数の expect-send シーケンスを含めることもできます。

基本的な chat スクリプトには次の情報が含まれます。

expect フィールドは、次の形式のサブフィールドを持つことができます。

expect[-send-expect]...

-send は、その前の expect が正常に読み取れなかった場合に送られるものであり、-send のあとの -expect は、その次に送られてくると想定されている文字列です。

たとえば、login--login という文字列を指定した場合、ローカルホストの UUCP は login が送られてくることを想定します。リモートマシンから login を受信すると、UUCP は次のフィールドに進みます。login を受信しなかった場合は、UUCP はキャリッジリターンを送信し、再度 login が送られてくるのを待ちます。ローカルコンピュータが、初期状態でどのような文字も想定していない場合は、expect フィールドで文字列 "" (NULL 文字列) を指定します。send 文字列が \c で終わっている場合を除き、send フィールドの送信のあとには必ずキャリッジリターンが伴うという点に注意してください。

次に示すのは、expect-send 文字列を使用する Systems ファイルエントリの例です。


sonora Any ACUEC 9600 2223333 "" \r \r ogin:-BREAK-ogin: Puucpx ssword:xyzzy

この例は、ローカルホストの UUCP に、2 個のキャリッジリターンを送ってから ogin: (Login: という場合もあるため) を待つように指示しています。ogin: を受信しなかった場合は、 BREAK を送ります。ogin: を受信した場合は、ログイン名 Puucpx を送ります。ssword: (Password: を表す) を受け取ったら、パスワード xyzzy を送ります。

次の表に、便利なエスケープ文字をいくつか紹介します。

表 26–1 Systems ファイルの chat スクリプトで使用されるエスケープ文字

エスケープ文字 

意味 

\b

バックスペース文字を送信または想定します。 

\c

文字列の末尾で使用すると、普通なら送信されるキャリッジリターンが抑止されます。その他の場合は無視されます。 

\d

後続の文字を送る前に 1 〜 3 秒の遅延が生じます。 

\E

エコーチェックを開始します。これ以降は、1 文字送信するたびに、UUCP はその文字が受信されるまで待ち、その後、チェックを続行します。 

\e

エコーチェックをオフにします。  

\H

ハングアップを 1 回無視します。このオプションはコールバックモデム用に使用します。 

\K

BREAK 文字を送信します。 

\M

CLOCAL フラグをオンにします。

\m

CLOCAL フラグをオフにします。

\n

改行文字を送信または想定します。 

\N

NULL 文字 (ASCII NUL) を送信します。 

\p

約 1/4 秒間または 1/2 秒間、一時停止します。 

\r

キャリッジリターンを送信または想定します。 

\s

スペース文字を送信または想定します。 

\t

タブ文字を送信または想定します。 

EOT

EOT とそれに続く 2 個の改行文字を送信します。 

BREAK

BREAK 文字を送信します。 

\ddd

8 進数 (ddd) で表される文字を送信または想定します。

Chat スクリプトを使用したダイアルバックの有効化

組織によっては、リモートコンピュータからの呼び出しを処理するダイアルインサーバーを設定する場合があります。たとえば、コールバックモデムを持つダイアルインサーバーを配備し、社員が自宅のコンピュータから呼び出せるようにすることができます。ダイアルインサーバーは、リモートマシンを識別すると、そのリモートマシンとのリンクを切断し、逆にそのリモートマシンを呼び出して、通信リンクが再確立されます。

Systems ファイルの chat スクリプトで、コールバックが必要な箇所で \H オプションを使用することにより、コールバックの操作を簡素化することができます。ダイアルインサーバーのハングアップが予想される箇所で、expect 文字列の一部として \H を使用します。

たとえば、ダイアルインサーバーを呼び出す chat スクリプトに、次のような文字列が含まれているとします。


INITIATED\Hogin:

ローカルホストの UUCP ダイアル機能は、ダイアルインサーバーから INITIATED という文字列を受け取ることを想定しています。文字列 INITIATED を受け取ると、ダイアル機能は、ダイアルインサーバーがハングアップするまで、その後受信するすべての文字をフラッシュします。またダイアル機能は、expect 文字列のその次の部分、つまり ogin: という文字列がダイアルインサーバーから送られてくるのを待ちます。ogin: を受け取ると、ダイアル機能は chat スクリプトを先へ進めます。

上記のサンプルでは \H の前後に文字列が指定されていますが、これらはなくてもかまいません。

/etc/uucp/Systems ファイルでのハードウェアフロー制御

擬似送信文字列 STTY= value を用いることによっても、モデムの特性を設定できます。たとえば、STTY=crtscts を使用すると、ハードウェアフロー制御が可能になります。STTY はすべての stty モードを受け入れます。詳細は、stty(1)termio(7I) のマニュアルページを参照してください。

次の例は、Systems ファイルのエントリ内でハードウェアフロー制御を指定しています。


unix Any ACU 2400 12015551212 "" \r ogin: Puucp ssword:Passuan "" \ STTY=crtscts

擬似送信文字列は、Dialers ファイルのエントリの中でも使用できます。

/etc/uucp/Systems ファイルでのパリティーの設定

場合によっては、呼び出そうとしているシステムがポートのパリティーを検査し、パリティーに誤りがあると回線を切断することがあります。そのため、パリティーのリセットが必要になります。expect-send (予期 - 送信) の文字列ペアとして "" P_ZERO を使用すると、上位ビット (パリティービット) が 0 に設定されます。この expect-send ペアの例を次に示します。


unix Any ACU 2400 12015551212 "" P_ZERO "" \r ogin: Puucp ssword:Passuan

次に、expect-send 文字列ペア "" P_ZERO のあとに続けることができるパリティー文字列ペアを示します。

"" P_EVEN

パリティーを偶数 (デフォルト) に設定する

"" P_ODD

パリティーを基数に設定する

"" P_ONE

パリティービットを 1 に設定する

これらのパリティー設定は、chat スクリプトのどこにでも挿入できます。この設定は、chat スクリプト内の "" P_ZERO (expect-send 文字列ペア) よりあとにあるすべての情報に適用されます。パリティー文字列ペアは、Dialers ファイルのエントリの中でも使用できます。次の例には、パリティー文字列ペア "" P_ONE が含まれています。


unix Any ACU 2400 12015551212 "" P_ZERO "" P_ONE "" \r ogin: Puucp ssword:Passuan