rexec -- exec
サーバのためのリモート実行クライアント
rexec [
-a -c -d -h -n -s ] [--] host command
rexec
は、リモートホスト上の
rexecd(8)
サーバのクライアントとして動作するために
rexec(3)
ルーチンを呼び出す。
このプログラムは、ユーザー名とパスワードによる認証を使い、
ホスト計算機上で ``command''
を実行するように要求する。
プロトコルの詳細は
rexec(3) と
rexecd(8)
を参照すること。
rexec
は以下のオプションを受け付ける。
-a
- コマンドからの標準エラーに対して補助的な
(auxiliary)
チャンネルを設定しない。
つまり、リモートの標準エラーと標準出力の両方がローカルの標準出力に返される。
デフォルトでは、
rexec
はリモートコマンドからの対話出力に対して
別々のチャンネルを設定するように要求する。
-c
- ローカルの標準入力が閉じられた場合でも、リモートの標準入力を閉じない。
通常、ローカルの標準入力が閉じられた場合は、リモートの標準入力も閉じられる。
-d
- デバッグ情報を表示する。
特に、リモートホストに送られたコマンドはエコーされる。
-h
- 使用法についてのメッセージを表示する。
-n
- 明示的にユーザー名とパスワードを要求する。
このオプションが指定されない場合、
ログイン情報として
$HOME/.netrc を調べる。
-s
- リモートプロセスに対して
rexec
が受け付けたシグナルを送らない。
通常、捕捉されたシグナルはリモートプロセスに渡される。
これにより、CNTRL-C
を入力した場合にリモートプロセスも終了する。
--
-
rexec が ``command''
のオプションに切り替えるためのオプション終了の印。
とても役立つオプションは
-n だけである。 $HOME/.netrc
にパスワードを設定していない場合でも、
パスワードを要求するプロンプトを出してくれる。
rexec othermachine -- cat ">remote_file; date" <local_file
この例では、ローカルのファイル
local_file を 別の計算機 othermachine
上に remote_file
という名前で書き出している。
シグナルをローカルで受け取った場合、
そのシグナルはブロック
I/O
を使ってリモートコマンドに渡される。
シグナルが 1
バイトであっても、通信が遅い場合には
ローカルコマンドを終了するのが遅れる。
さらに、シグナルがローカルの
rexec
手続きに残ったままになり、
シグナルが送られた後に
リモートコマンドがユーザー入力を受け付けられなくなる場合もある。
リモートコマンドにオプションを渡すのに、クォートするのではなく、
``--''
フラグを使わなくてはならない点が面倒である。
これは GNU の
getopt(3)
ルーチンが呼ばれるためである。
この動作は、環境変数
POSIXLY_CORRECT
を設定することで修正される。
バグ報告とシステム間の非互換性に関しては、著者に連絡して下さい。
rexec(3),
rexecd(8)
Michael Sadd
[email protected]
http://www.msc.cornell.edu/~sadd/