FreeBSD ハンドブック
Prev | Chapter 18. シリアル通信 | Next

# 18.5. ダイアルアウトサービス

原作: FAQ からの情報

訳: 丸山 剛司 `<tmaruya@nnc.or.jp>`. 31 December 1996.

以下はモデムを利用して他のコンピュータと 接続する方法を説明しています。 これはリモートホストとターミナル接続を確立するための 適切な方法です。

これは BBS に接続するときによく使います。

この種の接続は PPP 接続に問題がある場合、Internet 上にあるファイルを 転送するのに非常に役に立ちます。FTP で何らかのファイルを転送したいのに PPP 接続を確立できない場合は、ファイルを FTP 転送するためにターミナルセッション を利用します。そして ZMODEM を利用してファイルを転送します。

## 18.5.1. `tip` や `cu` が実行できないはなぜ?

あなたのシステムで `tip` や `cu` というプログラムは `uucp` や `dialer` というグループに所属しているユーザのみが 実行できるようになっているのでしょう。リモートホストやモデムを 利用できる `dialer` のグループにあなたのアカウントを 加えましょう。

もしくは下記のコマンドを使うことによって、そのシステムで `tip` や `cu` を誰でも使えるようになります:

    # chmod 4511 /usr/bin/tip

このコマンドは `cu` に対しておこなう必要はありません、それは `cu` は `tip` に対するハードリンクだからです。

## 18.5.2. 私の Hayes モデムはサポートされていません、 どうしよう?

実際、`tip` の マニュアルページは古くなっています。既に Hayes ダイアラが組み込まれています。`/etc/remote` ファイル中で `at=hayes` を使ってください。

Hayes ドライバは、最近のモデムの新しい機能である `BUSY`、`NO DIALTONE`、 `CONNECT 115200`などのメッセージを 認識できるほど賢くはなく、単に混乱を起こすだけです。 `tip`を使う場合には、 (`ATX0&W` とするなどして) これらの メッセージを表示させないようにしなくてはいけません。

また、`tip` のダイアルのタイムアウトは 60秒です。モデムの タイムアウト設定はそれより短くすべきであり、 そうしないと `tip` は通信に問題があると判断するでしょう。 `ATS7=45&W` を実行してください。

実際、デフォルトの `tip` は Hayes の完全なサポートを しているわけではありません。解決方法は `/usr/src/usr.bin/tip/tip` の下の `tipconf.h` を変更することです。 もちろんこれにはソース配布ファイルが必要です。

`#define HAYES 0` と記述されている行を `#define HAYES 1` と変更し、そして `make`、`make install` を実行します。これでうまく動作するでしょう。

## 18.5.3. これらの AT コマンドを入力するには?

`/etc/remote` ファイルの中で “direct” エントリを作ります。たとえばモデムが 1番目のシリアルポートである `/dev/cuaa0` に接続されている場合、次のようにします:

    cuaa0:dv=/dev/cuaa0:br#19200:pa=none

モデムがサポートする最大の bps レートを br フィールドに使います。そして `tip cuaa0` を実行すると、モデムが利用できるようになります。

`/dev/cuaa0` がシステムに存在しない場合は、次のようにします:

    # cd /dev
    # ./MAKEDEV cuaa0

または root になって以下のように cu コマンドを実行します:

    # cu -lline -sspeed

`line` にはシリアルポートを指定します (例えば `/dev/cuaa0`)。そして `speed` には接続する速度を指定します (例えば `57600`)。その後 AT コマンドを実行したら、`~.` と入力すれば終了します。

## 18.5.4. pn 機能の `@` 記号が使えません!

電話番号 (pn) 機能の中での `@` 記号は、 tip に `/etc/phone` にある電話番号を参照するように伝えます。しかし `@` の文字は `/etc/remote` のような 設定ファイルの中では特殊文字となります。 バックスラッシュを使ってエスケープをおこないます:

    pn=\@

## 18.5.5. コマンドラインから電話番号を指定するには?

“generic” エントリと呼ばれるものを `/etc/remote` に追加します。 例えば次のようにします:

    tip115200|Dial any phone number at 115200 bps:\
            :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
    tip57600|Dial any phone number at 57600bps:\
            :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

そして

    # tip -115200 5551234

のように利用できます。 `tip` より `cu` を使いたい場合、 `cu` の generic エントリを使います:

    cu115200|Use cu to dial any number at 115200bps:\
        :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

そして

    # cu 5551234 -s 115200

と実行します。

## 18.5.6. 毎回 bps レートを入力しなければいけませんか?

`tip1200` や `cu1200` 用のエントリを記述し、適切な通信速度を br フィールドに設定します。`tip` は 1200 bps が正しいデフォルト値であるとみなすので、 `tip1200` エントリを参照します。もちろん 1200 bps を使わなければならないわけではありません。

## 18.5.7. ターミナルサーバを経由して 複数のホストへアクセスしたいんです。

毎回接続されるのを待って `CONNECT <host>` と入力する かわりに、tip の `cm` 機能を使います。 例えば、`/etc/remote` に次のようなエントリを追加します:

    pain|pain.deep13.com|Forrester's machine:\
        :cm=CONNECT pain\n:tc=deep13:
    muffin|muffin.deep13.com|Frank's machine:\
        :cm=CONNECT muffin\n:tc=deep13:
    deep13:Gizmonics Institute terminal server:\
        :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

これで、`tip pain` や `tip muffin` と実行すると pain や muffin のホストに接続することができ、 `tip deep13` を実行するとターミナルサーバに接続します。

## 18.5.8. tip を使ってそれぞれのサイトの 複数の回線に接続できますか?

これは大学に電話回線がいくつかあって 数千人の学生が接続しようとする 場合によくある問題です。

あなたの大学のエントリを `/etc/remote` ファイルに作成して、`pn` のフィールドには `@` を使います:

    big-university:\
        :pn=\@:tc=dialout
    dialout:\
        :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

そして `/etc/phone` ファイルに大学の電話番号の一覧を書きます:

    big-university 5551111
    big-university 5551112
    big-university 5551113
    big-university 5551114

`tip` は一連の電話番号を試みて、 最終的に接続できなければあきらめます。 リトライを続けさせたい場合は、`tip` を while ループに入れて 実行します。

## 18.5.9. CTRL+P を 1回送るために 2度押す必要があるのはなぜ?

CTRL+P は通常 “force (強制)” 文字であり、 `tip` に次の文字が リテラルデータであることを伝えます。force 文字は “変数の設定” を意味する `~s` エスケープによって他の文字にすることができます。

`~sforce=`single-char`` と入力して改行します。`single-char` は、任意の 1バイト文字です。 `single-char` を省略すると NUL 文字になり、これは CTRL+2 や CTRL+SPACE を押しても入力できます。また、 `single-char` に SHIFT+CTRL+6 を割り当てる方法を使っているターミナルサーバもあります。

`$HOME/.tiprc` に次のように定義することで、任意の文字を force 文字として利用できます:

    force=<single-char>

## 18.5.10. 打ち込んだ文字が突然すべて大文字になりました??

CTRL+A を押してしまい、caps-lock キーが壊れている場合のために設計された `tip` の “raise character” モードに入ったのでしょう。 既に述べたように `~s` を使って、 `raisechar` をより適切な値に 変更してください。もしこれら両方の機能を使用しないのであれば、 force 文字と同じ設定にすることもできます。

以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs ユーザにうってつけの .tiprc ファイルのサンプルです:

    force=^^
    raisechar=^^

^^ は SHIFT+CTRL+6 です。

## 18.5.11. `tip` でファイルを転送するには?

もし他の Unix のシステムと接続しているなら、 `~p`(put) や `~t`(take) でファイルの送受信ができます。これらのコマンドは 相手のシステムの上で `cat` や `echo` を実行することで 送受信をします。 書式は以下のようになります:

`~p` ローカルのファイル名 [リモートのファイル名]

`~t` リモートのファイル名 [ローカルのファイル名]

この方法ではエラーチェックをおこないませんので、zmodem などの他のプロトコルを使った方がよいでしょう。

## 18.5.12. `tip` から zmodem を実行するには?

ファイルを受信するには、 リモート側で送信プログラムを起動します。そして `~C rz` と入力すると、ローカル側へのファイルの受信が 始まります。

ファイルを送信するには、 リモート側で受信プログラムを起動します。そして `~C sz `files`` と入力すると、 リモート側への ファイルの送信が始まります。

Prev | Home | Next
ダイアルインサービス | Up | シリアルコンソールの設定