rcmd サブルーチン

目的

リモート・ホストでのコマンドの実行を許可します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

int rcmd (Host,
Port, LocalUser, RemoteUser, Command, ErrFileDesc)
char ** Host;
u_short  Port;
char * LocalUser;
char * RemoteUser;
char * Command;
int * ErrFileDesc;

説明

rcmd サブルーチンを使用すると、 rshd rlogin、および rpc などをサポートするリモート・ホスト上で、特定のコマンドを実行することができます。

rcmd サブルーチンを使用できるのは、root ユーザーの実効ユーザー ID を持つプロセスだけです。 リモート・ポート番号に基づく認証スキームは、許可を検証するために使用されます。 0 から 1023 までの範囲のポートは、root ユーザーのみが使用できます。 アプリケーションは、 Portを渡す必要があります。これは、512 から 1023 の範囲内でなければなりません。

rcmd サブルーチンは、 /etc/hosts ファイルで、ネーム・サーバーを介して、またはローカル・ネーム・サーバーが実行されていない場合に、ホストを検索します。

接続が成功すると、 SOCK_STREAM タイプのインターネット・ドメイン内のソケットが呼び出しプロセスに戻され、標準入力 (stdin) および標準出力 (stdout) としてリモート・コマンドに与えられます。

常に Host パラメーターを指定してください。 ローカル・ドメインとリモート・ドメインが同じ場合は、ドメイン部分の指定はオプションです。

rcmd サブルーチンを含むすべてのアプリケーションは、特定の値に設定された _BSD マクロを使用してコンパイルする必要があります。 許容値は 43 および 44 です。 さらに、すべてのソケット・アプリケーションに BSD libbsd.a ライブラリーを組み込む必要があります。

パラメーター

項目 説明
Host /etc/hosts ファイルにリストされているリモート・ホストの名前を指定します。 指定されたホスト名がこのファイルに見つからない場合、 rcmd サブルーチンは失敗します。
ポート 接続に使用するウェルノウン・ポートを指定します。 /etc/services ファイルには、DARPA インターネット・サービス、そのポート、およびソケット・タイプが入っています。
LocalUser および RemoteUser ローカル・ホストとリモート・ホストでそれぞれ有効なユーザー名を指します。 任意の有効なユーザー名を指定できます。
Command リモート・ホストで開始するコマンドの名前を指定します。
ErrFileDesc 通信チャネルのセットアップを制御する整数を指定します。 整数オプションは以下のとおりです。
非ゼロ
制御プロセスへの補助チャネルが設定されており、ErrFileDescパラメータがそのチャネルのファイル記述子を指していることを示す。 制御プロセスによって、このチャネルのリモート・コマンドから診断出力が 提供され、コマンドのプロセス・グループへ転送するシグナル数としてバイトも 受け入れられます。
0
リモート・コマンドの標準エラー (stderr) が標準出力 (stdout) と同じであることを示します。 任意のシグナルをリモート・プロセスに送信するサービスは提供されません。 ただし、アウト・オブ・バンド・データをリモート・コマンドに送信することは可能です。

戻り値

正常終了すると、 rcmd サブルーチンは有効なソケット・ディスクリプターを戻します。

失敗すると、rcmdサブルーチンは-1を返す。 呼び出しプロセスの実効ユーザーIDがルート・ユーザーでない場合、またはサブルーチンがホストの解決に失敗した場合、サブルーチンは-1を返す。

ファイル

項目 説明
/etc/services サービス名、ポート、およびソケット・タイプが含まれます。
/etc/hosts ネットワーク内のホストのホスト名とそのアドレスが含まれます。
/etc/resolv.conf ネーム・サーバーとドメイン・ネームが入っています。