uux(1) UUCP を用いて、リモートマシン上でコマンドを実行する

書式

uux [ options ] command

解説

uux コマンドは、リモートマシン上でコマンドを実行する場合や、 リモートシステム上のファイルを用いてローカルシステム上でコマンドを実行する ために用いられます。 コマンドは、即座に実行されるわけではなく、 uucico (8) デーモンが他のシステムを呼び出してジョブを実行するまでは、キューイング されます。デーモンは、 -r または --nouucico オプションを指定して本コマンドを実行しない限りは、自動的に走り出します。

実際にコマンドを実行するのは、 uuxqt (8) デーモンです。

引数に指定されたファイルは、リモートシステムから、実際にコマンド実行を行う システムに集められます。標準入力についても同様です。 標準出力は、リモートシステム上のファイルに出力されます。

リモートシステム上でコマンド実行をする場合は、 コマンド名の前に、システム名と "!" マークをつけます。 システム名がない場合には、ローカルシステム上でのコマンド実行であると みなされます。

"!" マークを含む各引数は、ファイル名であるとみなされます。 "!" マークの前はファイルが存在するシステム名を、後にはファイルへのパス名を 記述します。 システム名がない場合には、ローカルシステム上のファイルであるとみなされます。 この場合、コマンドの実行されるリモートシステムへファイル転送が発生します。 パスが絶対パスでない場合、現在のローカルシステム上の作業ディレクトリ名が そのパス名の前に付加されます。 この場合、リモートシステム上で無効なパスとなってしまうかも知れません。 また、パス名として ~/ が先頭に付加されている場合、 これは UUCP パブリックディレクトリ (通常は /usr/spool/uucppublic) からの相対パスであるとみなされます。一般的に、~name で始まるディレクトリは、 その名前のユーザのホームディレクトリからの相対パスであるとみなされます。

標準入出力は、普通にリダイレクトされます。パス名の中に "!" を含む場合は、 そのファイルはリモートシステム上にあるものとして扱われます。 リダイレクトキャラクタを使う場合には、シェルで解釈されずに uux に渡されるように、クォートしなくてはなりません。また、追加書き込み のリダイレクション (>>) は使用できません。

指定された全てのファイルは、コマンド実行前に、1つのディレクトリに 集められます。これは、各ファイルは異なるベースネームを持つ必要がある ということを意味します。例えば、

uux 'sys1!diff sys2!~user1/foo sys3!~user2/foo >!foo.diff'
は、コマンド実行時に失敗します。なぜなら、 両方のファイルが sys1 に同一のファイル名 foo でコピーされるからです。

引数を括弧で括ることで "!" が解釈されるのを防ぐことができます。これは、 uucp コマンドをリモートシステム上で実行する際に有用です。

コマンド名なしの実行要求 (例えば uux sys! ) は、指定したシステム用の poll ファイルを作成します。

オプション

以下のオプションが uux で使用可能です。
-,-p, --stdin
標準入力から読み込み、それをコマンド実行時の標準入力として使います。
-c, --nocopy
ローカルファイルをスプールディレクトリにコピーしません。デフォルトは この設定です。もし、 uucico (8) デーモンの実行前にファイルが消去されてしまった場合、コピーは失敗します。 ファイルは、 uucico (8) デーモンと uux を起動したユーザの両者から読み込み可能でなければなりません。
-C, --copy
ローカルファイルをスプールディレクトリにコピーします。
-l, --link
ローカルファイルをスプールディレクトリの下にハードリンクします。 ファイルがスプールディレクトリと異なる物理デバイス上に存在する場合、 リンクは張れません。この場合、 -c または --nocopy オプションが指定されていない限り、スプールディレクトリの下に対象ファイルを コピーします (言い替えると、 --link を使うとデフォルトが --nocopy から --copy にかわるということです)。 ファイルが uucico (8) デーモンの処理前に変更された場合、転送されるファイルは変更後のファイル になります。ファイルは、 uucico (8) デーモンと uux を起動したユーザの両者から読み込み可能でなければなりません。
-g grade, --grade grade
ファイル転送コマンドの優先度を設定します。高い優先度を持つジョブが 先に実行されます。優先度は、高い順に 0 ... 9 A ... Z a ... z となっています。
-n, --notification=no
ジョブの結果を通知するメールを送りません。たとえジョブが失敗してもです。
-z, --notification=error
エラー発生時に、ジョブのステータスに関するメールを送ります。 Taylor UUCP の uuxqt を含む多くの uuxqt デーモンでは、この動作はデフォルトです。 このような場合、 --notification=error は何の効果もありません。しかし、 --notification=error オプションを設定していないとジョブが成功した場合にメールを送る uuxqt デーモンもあれば、 --notification=error オプションを指定しないとジョブが失敗した時にメールを送ってくれないという uuxqt デーモンもあります。
-r, --nouucico
uucico (8) デーモンを即時には実行しません。後で処理されるように要求をキューに貯める だけです。
-j, --jobid
ジョブ id を標準出力に表示します。ジョブ id は、各ファイルコピー操作を 行うよう要求されるたびに生成されます。これらのファイルコピー操作は、 uustat (1) の --kill スイッチで jobid を渡すことでを用いることで取り消し可能ですが、 そうするとそのジョブは終了不能になります。
-a address, --requestor address
指定した E-mail アドレスに対してジョブのステータスを報告します。
-x type, --debug type
特定のデバッグタイプを有効にします。タイプとしては、abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing があります。 uux で意味があるのは、abnormal, config, spooldir, execute の 4 つだけです。 本オプションでは、コンマで区切ることで複数のデバッグタイプが指定可能です。 デバッグタイプをカンマで区切って複数指摘することもできますし、 --debug オプションを複数個指定することも可能で、 たくさんのデバッグタイプを一度に設定することができます。例えば、 --debug 2 という指定は、 --debug abnormal,chat と同じ意味です。
-I file, --config file
使用するコンフィギュレーションファイルを設定します。ただし、 本オプションが使用可能かどうかは、 uux がどのようにコンパイルされたかによります。
-v, --version
バージョン情報を表示して終了します。
--help
ヘルプメッセージを表示して終了します。

使用例


uux -z - sys1!rmail user1
コマンド``rmail user1'' を、システム sys1 上で実行します。コマンドへの入力 データは、標準入力が用いられます。ジョブが失敗した場合、 mail (1) コマンドによってメッセージが送られてきます。


uux 'diff -c sys1!~user1/file1 sys2!~user2/file2 >!file.diff'
システム sys1 とシステム sys2 上にあるファイルを取得し、 diff を実行した上で、カレントディレクトリのファイル file.diff に結果を 格納します。これがきちんと働くためには、カレントディレクトリが uuxqt (8) デーモンによって書き込める状態でなければなりません。


uux 'sys1!uucp ~user1/file1 (sys2!~user2/file2)'
uucp を sys1 上で実行し、sys1 上のファイル file1 を sys2 上にコピーします。 この例では、クォート用の括弧の使い方を示してあります。

制限

リモートシステムでは、実行が許可されていないコマンドがあるかもしれません。 多くのリモートシステムでは、 rmailrnews しか実行を許可していません。

オプションのうちいくつかは、リモートシステム上の uuxqt (8) デーモンの能力に依存します。

関連ファイル

これらのファイル名は、コンパイル時もしくはコンフィギュレーションファイル で変更されうるため、一例にすぎません。


/usr/lib/uucp/config - 初期化ファイル
/usr/spool/uucp - UUCP スプールディレクトリ
/usr/spool/uucp/Log - UUCP ログファイル
/usr/spool/uucppublic - デフォルトの UUCP パブリックディレクトリ

バグ

複数のシステムにまたがって、ファイル参照をすることはできません。

--jobid オプションを使うと、ジョブ id が非常に多く出力されてしまいます。また、 リモートファイルを必要とするローカル実行要求をキャンセルする良い方法は 存在しません。

作者

Ian Lance Taylor ([email protected])