RCMD(1)

名称
rcmd - rcmd(3) 用のバックエンドドライバ

書式
rcmd [-Kdnx] [-k realm] [-l username] [-u localusername] host command

解説
rcmd は command を host 上で実行します。

rcmd は、標準入力をリモートのコマンドにコピーし、 リモートのコマンドの標準出力を自分の標準出力に出力し、 リモートのコマンドの標準エラー出力を自分の標準エラー出力に出力します。 interrupt, quit, terminate シグナルは、リモートのコマンドへ伝達されます。 通常、リモートのコマンドが終了した場合は rcmd も終了します。 オプションは以下のものがあります:

-K  -K オプションは、 Kerberos の全ての認証を無効にします。

-d  -d オプションは、 リモートホストとの通信に使う TCP ソケットのデバッグ機能を (setsockopt(2) を用いて) 有効にします。

-k  -k オプションを指定すると、 rcmd は、 krb_realmofhost(3) で決まったリモートホストの realm のかわりに、 realm 内のリモートホストのチケットを得るようになります。

-l  デフォルトでは、リモート側のユーザ名はローカル側のユーザ名と同じです。 -l オプションを使うと、リモート側の名前を指定したものにすることができます。 Kerberos による認証が使われ、 rlogin(1) と同様な方法で許可が下されます。

-u  -u オプションを使うと、ローカル側のユーザ名を指定したものにすることができます。 このオプションを使うことができるのはスーパユーザだけです。

-n  -n オプションを使うと、スペシャルデバイス /dev/null を標準入力にリダイレクトします (このマニュアルの バグ セクションを参照してください)。

-x  -x オプションを指定すると、全てのデータの交換を DES で暗号化します。これを用いると、応答時間が著しく悪化します。

クォートされていないシェルのメタキャラクタはローカル側のマシンで解釈され、 いっぽう、クォートされたメタキャラクタはリモート側のマシンで解釈されます。 たとえば、以下のコマンド

    rcmd otherhost cat remotefile >> localfile

はリモート側のファイル remotefile の内容をローカル側のファイル localfile に追加し、いっぽう、

    rcmd otherhost cat remotefile ">>" other_remotefile

はリモート側のファイル remotefile の内容を別のリモート側のファイル other_remotefile に追加します。

関連ファイル
/etc/hosts

関連項目
rsh(1), kerberos(3), krb_sendauth(3), krb_realmofhost(3)

歴史
rcmd コマンドは NetBSD 1.3 で登場し、 rsh(1) を起源としています。このコマンドの目的は、 rcmd(3) 用のバックエンドドライバを作成することにより rcmd(3) の利用者がスーパユーザの権限を持たなくてもいいようにすることにありました。

バグ
もしあなたが csh(1) を使っていて、 rcmd を、その入力を端末からリダイレクトしない状態でバックグラウンドで実行した場合、 たとえリモート側のコマンドが read を発行しなくともブロックします。 もし入力が要求されないものであれば、 -n オプションを使って、 rcmd の入力を /dev/null にリダイレクトすべきです。

対話的なコマンド (rogue(6) や vi(1) など) には rcmd を使うことはできません。代りに rlogin(1) を使ってください。

stop シグナル SIGSTOP は、ローカル側の rcmd プロセスしか止めません。これは間違いなく不適切ですが、現在は ここでは説明できないくらい複雑なために、修正するのが難しい状態にあります。