uux(1)

名称
uux - UUCP を用いて、リモートマシン上でコマンドを実行する

書式
uux [ options ] command

解説
リモートシステム上でコマンドを実行する時、 またはリモートシステム上のファイルを用いて、 ローカルシステム上でコマンドを実行する時に uux コマンドを用います。 コマンドは即座に実行される訳ではなく、 uucico (8) デーモンがシステムを呼び出し、ジョブを実行するまではキューイングされます。 デーモンは、 -r または、 --nouucico オプションを指定して本コマンドを実行しない限り、自動的に呼び出されます。 実際のコマンド実行は、 uuxqt (8) デーモンが行います。 引数に指定されたファイルは、リモートシステムから実際にコマンド実行を行う システムに集めることができます。 標準入力についても同様です。標準出力は、 リモートシステム上のファイルに出力することができます。 リモートシステムでコマンドを実行する場合は、[システム名] ! の後に、 [コマンド名] を記述します。 システム名が空白の場合には、 ローカルシステム上でのコマンドの実行であるとみなされます。 "!" マークを含む引数は、ファイル名を示しているものとみなされます。 "!" マークの前にはファイルが存在するシステム名を、 後にはファイルへのパス名を記 述します。 システム名が空白の場合には、ローカルシステム上のファイルであるとされます。 この場合、コマンドの実行されるリモートシステムへファイル転送が発生します。 ファイル名が絶対パス名でない場合、 現在のローカルシステム上の作業ディレクトリ名がその前に付加されます。 この場合、リモートシステム上で無効なパスとなってしまうかも知れません。 また、パス名として ~/ が先頭に付加される場合、 これはUUCPパブリックディレクトリ(通常は/usr/spool/uucppublic)からの 相対パスであるとみなされます。一般的に、~name/ で始まるディレクトリは、 ユーザ name のホームディレクトリであるとして処理されます。 標準入出力は普通にリダイレクトされます。パス名の中に "!" を含む時は、 そのファイルがリモートシステム上にあるものとして扱われます。 リダイレクトキャラクタを引数の一部として扱う時には、 シェルに解釈されずに uux に渡すことが出来るようにクオートしなくてはなりません。また、追加書き込み のリダイレクション (>>) は使用できません。 指定された全てのファイルは、 コマンド実行前に１つのディレクトリに集められます。 このため、各ファイルは異なるベースネームを持つ必要があります。 例えば
uux 'sys1!diff sys2!~user1/foo sys3!~user2/foo >!foo.diff'
は、コマンド実行時に失敗します。なぜなら、sys2 の ~user1/foo と、sys3 の ~usr2/foo の両方のファイルを、 sys1 の同一の名前のファイル foo にコピーするためです。 括弧で囲むことで "!" が解釈されるのをエスケープできます。これは uucp コマンドをリモートシステム上で実行する際に有用です。 コマンド名なしで実行(例: uux sys!) すると、システム sys の記録ファイル (原文: poll file) を作ります。

オプション
以下のオプションが uux で使用可能です。

-, -p, --stdin
    標準入力から読み込んで、それを実行するコマンドの標準入力の内容とします。

-c, --nocopy
    ローカルファイルをスプールディレクトリにコピーしません。デフォルトはこの 設定です。もし、 uucico (8) デーモン実行前にそのローカルファイルが消去されてしまった場合、コピー は失敗します。ファイルは、 uucico (8) デーモンと uux を起動したユーザの両者から read 可能でなければなりません。

-C, --copy
    ローカルファイルをスプールディレクトリにコピーします。

-l, --link
    ローカルファイルをスプールディレクトリの下にハードリンクします。ファイル がスプールディレクトリとは異なる物理デバイス上に存在する場合、 リンクは張れません。この場合、 -c か、 --nocopy オプションが指定されていない限り、スプールディレクトリの下に対象ファイル がコピーされます(これは、 --link が --nocopy のかわりに --copy をデフォルト設定すると言うことです)。 ファイルが uucico (8) デーモンの処理前に変更された場合、 転送されるファイルは変更後のファイルです。ファイルは、 uucico (8) デーモンと、 uux を起動したユーザの両者から read 可能でなければなりません。

-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 は、各ファイルコピー操作が実際に処理を開始するように要求された時、 生成されます。これらのファイルコピー操作は、 --kill スイッチとともに uustat (1)に ジョブ id を渡すことで取消可能かも知れませんが、 そうするとジョブは完了不能となります。

-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 オプションは、1回のコマンド起動で複数回指定可能です。 また、タイプとして数字を指定することも可能です。例えば、 --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) デーモンによって write 可能である必要があります。
uux 'sys1!uucp ~user1/file1 (sys2!~user2/file2)'
uucp を、sys1 上で実行し、sys1 上のファイル file1 を sys2 上にコピーします。 この例では、引数をクオートするために括弧を用いる方法を示しています。

制限
リモートシステムでは、実行が許可されないコマンドがあるかもしれません。 多くのリモートシステムでは、 rmail と rnews に限って実行を許可しています。 実行されるかどうかは、リモートシステムの uuxqt (8) デーモンに依存するオプションがあります。

関連ファイル
関連ファイル名は、 コンパイル時の指定ないしは初期設定ファイルにより変化します。 以下に挙げるものは、その一例です。
/usr/lib/uucp/config - 初期設定ファイル
/usr/spool/uucp - UUCP スプールディレクトリ
/usr/spool/uucp/Log - UUCP ログファイル
/usr/spool/uucppublic - デフォルトの UUCP パブリックディレクトリ

関連項目
mail(1), uustat(1), uucp(1), uucico(8), uuxqt(8)

バグ
複数のシステムにまたがって、ファイル参照をすることは出来ません。 --jobid オプションを使うと、ジョブ id が非常に多く出力されてしまいます。 また、リモートファイルを必要とするローカルなコマンドの実行を キャンセルする良い方法は存在しません。

作者
Ian Lance Taylor (ian@airs.com)