ネットワークとは、相互に通信できるように設定されたコンピュータのグループです。使っているマシンがネットワークの一部である場合は、自分のマシン (ローカルマシン) にログインしたままでネットワーク上の他のマシン (リモートマシン) の資源を利用できます。ユーザは、他のマシンに影響を及ぼすリモートコマンドを自分のマシンから実行したり、他のマシンにログインしたりすることができます。
この章では、次の事項について説明します。
ネットワークの一般概念
リモートマシンにログインする方法
リモートマシンからファイルをコピーする方法
リモートマシン上でコマンドを実行する方法
リモートマシンに関する状態情報を取得する方法
使っているマシンがネットワークに接続されていない場合は、この章で説明する内容は現在の環境には適用できません。ただし、この章を一通り読めば、ネットワークの利点を大まかに理解することができます。
マシン間をネットワークで接続することによって、相互に情報を伝送できます。一般にネットワークは、通常おおよそ 300 メートル以内の狭い地域をカバーするローカルエリアネットワーク (LAN)、数千キロメートル以上の地域をカバーできる広域ネットワーク (WAN)、それらの中間のキャンパスエリアネットワーク (CAN) に分類できます。
いくつかのネットワークが結びついて構成されているネットワークは、インターネットワークと呼ばれます。たとえば、ビル内部のローカルなネットワークの一部であるマシンが、同時にそのローカルなネットワークと国中にまたがる同種類のネットワークとを接続するインターネットワークの一部になることもあります。通常、ネットワークとインターネットワークとの違いはユーザの目には触れないため、このマニュアルでは「ネットワーク」という用語をネットワークとインターネットワークの両方の意味で使います。
ネットワークに接続されたマシンは、ネットワークプロトコル (共通のネットワーク言語) を使って通信を行い、適切な場所に情報を伝送します。リレーとも呼ばれるインターネットワークプロトコルは、ネットワークを相互にリンクするために使われます。
rlogin コマンドを使って、ネットワーク上の他の UNIX マシンにログインできます。
リモートマシンにログインするには、次のように入力します。
$ rlogin machinename |
machinename はリモートマシン名です。
パスワードの入力を促すプロンプトが表示されたら、リモートマシン上でのパスワードを入力して Return キーを押します。ローカルマシン名がリモートマシン上の /etc/hosts.equiv ファイル内に記述されていれば、リモートマシンはそのローカルマシン名を「信用」していることになり、パスワードの入力を要求しません。
上記の例では、pwd コマンドで示されるように、keithp というユーザがマシン lonesome にログインし、そのマシン上の /home/keithp ディレクトリに移動しています。自分のホームディレクトリが存在しないリモートマシンにログインした場合は、リモートマシン上にホームディレクトリがないというメッセージが rlogin によって表示され、そのマシンのルートディレクトリ (/) に移動します。
現在のログイン名以外でリモートマシンにログインする場合もあります。たとえば、他のユーザのマシン上で (他のユーザのログイン名を使って) 作業をしているときに、自分のマシンに自分のログイン名でログインする場合などです。このような場合は、rlogin の -l オプションを使います。コマンド構文は次のとおりです。
rlogin machinename -l username
次の例は、マシン blue のユーザ keithp が他のマシン lonesome にユーザ earl としてログインする方法を示しています。
$ rlogin lonesome -l earl Password: Last login: Wed Jan 8 07:12:25 from blue Sun Microsystems, Inc. SunOS 5.1 October 1992 (以下のコマンドは lonesome 上で実行される) $ pwd /home/earl $ logout Connection closed. $ |
現在のログイン名以外でリモートマシンにログインすると、指定したユーザのホームディレクトリに移動します。
名前が認識できないリモートマシンにログインしようとすると、rlogin はホスト名データベースの検索に失敗し、次のようなメッセージを表示します。
$ rlogin stranger stranger: unknown host $ |
通常は作業セッションの最後に logout と入力して rlogin セッションを終了します。通常の方法でセッションを終了できない場合は、行の先頭にチルド文字とピリオド (‾.) を入力することによって rlogin セッションを中止できます。これによりリモートマシンとのログインセッションは中止され、ユーザは自分のマシンに戻ります。
あるリモートマシンからそれ以外のリモートマシンにアクセスすることによって、複数のマシンにログインしている状態で、‾. を使ってそれらのマシンのどれかとのセッションを中止した場合も、最初にログインした自分のマシンに戻ります。
$ rlogin dakota Password: Last login: Fri Jan 10 09:14:43 from blue Sun Microsystems, Inc. SunOS 5.1 October 1992 (以下のコマンドは dakota 上で実行される) $ ‾. (‾. は画面上に表示されないことがある) Connection closed. $ |
1 つ前の中間セッションに戻りたい場合は、次のように 2 つのチルド文字の後にピリオドを付けたコマンド (‾‾.) を使います。
rlogin セッションを一時的に中断して後でまた戻りたい場合は、チルド文字 (‾) の後に Ctrl-Z を入力します。rlogin セッションは中断されたプロセスになり、ユーザはログイン元のマシンに戻ります。
rlogin セッションを再開するには、fg と入力します。fg の代わりに、パーセント記号 (%) の後に中断されたプロセスのプロセス番号を入力することも可能です。(プロセス番号が指定されない場合に % で使われるデフォルトは、最後に中断されたプロセスのプロセス番号です。)
‾‾. による rlogin セッションの中止と同様に、2 つのチルド文字の後に Ctrl-Z (‾‾^Z) を入力すると、現在の rlogin セッションが中断されて 1 つ前の中間セッションに戻ります。
各種リモートマシンに対して別々のログイン名でログインしている場合、ログイン状態を正確に把握することが必要になる場合があります。その場合、who am i と入力することによって、現在ログインしているマシン名と現在のユーザ名を表示できます。
rlogin についての詳細は、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。
rcp コマンドを使って、異なるマシン間でファイルをコピーできます。rcp は、リモートマシン上の /etc/hosts.equiv ファイルと /etc/passwd ファイルを参照して、ユーザがアクセス権を持っているかどうか確認します。rcp の構文は、cp コマンドの構文と似ています。
異なるマシン間でサブディレクトリとその内容をコピーするには、 rcp -r を使います。
リモートマシンからローカルマシンにファイルをコピーするには、次の構文を使います。
rcp machinename:source destination
machinename はリモートマシン名、source はコピーするファイル名、destination はコピーしたファイルが格納されるローカルマシン上のパス名です。
次の例は、リモートマシン dakota のファイル /home/dakota/doc/letter を、ローカルマシン blue の /tmp ディレクトリにコピーする方法を示しています。
$ rcp dakota:/home/dakota/doc/letter /tmp $ |
rcp では、さまざまな省略名と構文を組み合わせて使うことができます。たとえば、リモートマシン fretful 上のユーザ hank のホームディレクトリにある .doc で終わる全ファイルを、ローカルマシン blue のカレントディレクトリにコピーするには、次のように入力します。
$ rcp fretful:‾hank/*.doc . $ |
ローカルマシンからリモートマシンにファイルをコピーするには、前記の構文を逆にした次の構文を使います。
rcp source machinename:destination
source はコピーするファイル名、machinename はリモートマシン名、destination はコピーしたファイルが格納されるリモートマシン上のパス名です。
次の例は、ローカルマシン上の ‾/usa/texas ディレクトリの austin というファイルを、リモートマシン fretful の ‾hank/cities ディレクトリにコピーする方法を示しています (‾ はローカルマシン上のホームディレクトリ、‾hank はユーザ hank のホームディレクトリであることに注意してください)。
$ rcp ‾/usa/texas/austin fretful:‾hank/cities $ |
rcp コマンドとそのオプションについての詳細は、 『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。
rsh コマンド (リモートシェルコマンド) を使うと、形式的にログインしなくてもリモートマシン上で 1 つのコマンドを実行できます。リモートマシンで 1 つのコマンドを実行するだけでよい場合は、rsh によって時間を節約できます。
リモートマシン上で 1 つのコマンドを実行するには、次のように入力します。
rsh machinename command
次の例は、リモートマシン lonesome 上の /home/lonesome/guitar ディレクトリの内容を表示する方法を示しています。
$ rsh lonesome ls /home/lonesome/guitar collings gibson santacruz fender martin taylor $ |
rlogin や rcp と同様に、rsh は、リモートマシンの /etc/hosts.equiv ファイルと /etc/passwd ファイルを参照して、ユーザがアクセス権を持っているかどうか確認します。
rsh コマンドとそのオプションについての詳細は、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。
rusers コマンド (リモートユーザ) を使って、ネットワーク上の他のマシンにログインしているユーザの情報を表示できます。rusers コマンドを引数なしで入力すると、ネットワーク上の各マシン名とそのマシンにログインしているユーザの情報が表示されます。
$ rusers aspen susan blue keithp dakota sally farmhouse elmer freeway lindab johnj karenm fretful hank lonesome george twister tex $ |
マシン freeway には現在 3 人の異なるユーザがログインしています。
特定のリモートマシンに関する情報を表示するには、次のように rusers コマンドの後にマシン名を指定します。
$ rusers freeway freeway lindab johnj karenm $ |
rusers コマンドで -l オプションを指定すると、詳細な情報が表示されます。表示される情報は、ユーザ名、マシン名と端末名、各ユーザがログインした時刻、各ユーザのアイドル時間 (1 分以上の場合のみ)、各ユーザのログイン元のマシン名 (存在する場合) です。
$ rusers -l freeway lindab freeway:ttyd8 Feb 10 08:12 5:29 johnj freeway:console Feb 10 09:16 karenm freeway:ttyp0 Feb 10 11:56 36 $ |
-l オプションは、マシン名を指定しなくても使えます。
rusers コマンドとそのオプションについての詳細は、『SunOS リファレンスマニュアル (1): ユーザーコマンド』を参照してください。