HTTPアップロード機能

$Date: 2022/06/10 02:46:39 $


概要

ヤマハルーター内の情報(configやSYSLOGなど)を指定したHTTPサーバーにアップロードすることができる機能です。

複数拠点のconfigやログの集中管理に使用することができます。

この機能を使用するためには、HTTPサーバー側での対応も必要です。サンプルに示すようなスクリプトをHTTPサーバー側で実行させます。


対応機種とファームウェアリビジョン

機種 ファームウェア
RTX1300 すべてのリビジョン
RTX1220
RTX1210
RTX1200

詳細

HTTPアップロード機能では、ヤマハルーターのconfigとSYSLOGをHTTPサーバーにアップロードできます。configはshow configコマンドまたは show config Nコマンド、SYSLOGはshow logコマンドの実行結果が【テキスト形式のファイル】として保存されます。保存したファイルの先頭には、実行したコマンド名が表示されます。

  表示例:

  [config.txt]
  show config 1
  #10 1 01 0
  console info on
  :

  [log.txt]
  show log
  2008/11/13 13:21:05: [IPv6] start DAD for fe80::2a0:deff:fe40:b798
  2008/11/13 13:21:05: [IPv6] start DAD for fe80::2a0:deff:fe40:b799
  2008/11/13 13:21:05: LANC1: PORT1 link changed (100BASE-TX Full Duplex)
  :

HTTPアップロードを実行したルーターでは、アップロードの成否に応じて以下のログを出力します。

○アップロードに成功した時
  # http upload go
  #
 (INFOレベルで出力します)
    [HTTP UPLD] Success to upload "(http uploadコマンドの保存ファイル名)"
○アップロードに失敗した時
  # http upload go
  エラー: HTTPのヘッダエラーです
  #
 (DEBUGレベルで出力します)
    [HTTPC] HTTP Header Error(HTTP/1.1 501)

 (INFOレベルで出力します)
    [HTTP UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"

  # http upload go
  エラー: 指定URLのファイルが見つかりませんでした
  #
 (DEBUGレベルで出力します)
    [HTTPC] HTTP Header Error(HTTP/1.1 404)

 (INFOレベルで出力します)
    [HTTP_UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"
○存在しないconfigをアップロードした時
  # http upload go
  エラー: アップロードするコマンドの実行に失敗しました
  #
 (INFOレベルで出力します)
    [HTTP_UPLD] Fail to execute "show config 4"
    [HTTP UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"
○アップロード失敗後にリトライする時
 (INFOレベルで出力します)
    [HTTP_UPLD] Retry upload (count = 9)
    [HTTP UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"
    [HTTP_UPLD] Retry upload (count = 8)
    [HTTP UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"
    [HTTP_UPLD] Retry upload (count = 7)
    [HTTP UPLD] Fail to upload "(http uploadコマンドの保存ファイル名)"
    ...

alarm http uploadコマンドが'on'の場合には、アップロードの成否に応じてアラーム音を鳴らします。

 エラー  ピピピ
 リトライ含めてエラー終了  ブー
 アップロードに成功  ピポ

http upload goコマンドはschedule atコマンドで指定することができ、startupを指定して起動時に実行させることもできます。

アップロードに失敗した場合にはリトライを行います。リトライする間隔や回数は、http upload retry intervalコマンドで設定することができます。
例えば、schedule atコマンドでstartupを指定した場合、起動直後はHTTPサーバーへの経路が確立していないため、アップロードに失敗することがあります。このような場合にはリトライすることで対応できるようになります。


HTTPサーバーへのファイルのアップロードは、cgiのフォームの仕組みで使用するパケットを、ヤマハルーターから送信することで実現します。そのため、HTTPサーバー側ではcgiを実行できるようにする必要があり、スクリプト(サンプル)によりcgiを処理させることで、ヤマハルーターからのファイルをアップロードできるようにします。

http upload configまたはhttp upload logコマンドの出力先ファイル名にディレクトリを指定して、そのディレクトリ内にconfigファイルやlogファイルを格納することができます。CGIの実行ディレクトリ上に、指定したディレクトリ名のディレクトリを作成します。
HTTPサーバーに複数のヤマハルーターからの情報が集まる場合、ディレクトリ名やファイル名を分けることで、どの機器からの情報かを識別できるようになります。

  [CGI実行ディレクトリ]
    |
    +-- ["RTX1_savedir1"アドレス]
    |     |
    |     +-- config.txt
    |     +-- log.txt
    |
    +-- ["RTX2_savedir1"ディレクトリ]
    |     |
    |     +-- ["savedir2"ディレクトリ]
    |           |
    |           +-- config.txt
    |           +-- log.txt
    |
    :

ディレクトリの階層の数は最大で5階層まで指定することができ、'/'で階層を区切ります(例:http upload config dir1/dir2/dir3/dir4/dir5/config.txt)。
ファイル名とディレクトリ名は32文字までとし、使用できる文字は半角英数字+記号('\'、'/'、'*'、'?'、'"'、'<'、'>'、'|' を除く)です。また、'-'、'.'から始まる名前も指定することができません。

HTTPサーバーのOSの種類には依存しません(Windows、UNIX、etc.)が、UNIX上のHTTPサーバーを使用する場合、CGIスクリプトが実行されるユーザー権限と同じ権限のファイルが生成されます。
よって、CGIスクリプトがnobodyユーザー権限で実行される場合は、生成されるファイルもnobodyユーザー権限となります。


コマンド

○HTTPアップロードするファイルの設定
[書式]
http upload TYPE [CONFIG_NO] [DIRECTORY/]FILENAME
no http upload [..]
[設定値]
TYPE ... 'config' or 'log'
CONFIG_NO ... 0-4.2
DIRECTORY ... 出力先のディレクトリ名
FILENAME ... 出力先のファイル名
[説明]
サーバーにアップロードする情報と、保存先のディレクトリ名及びファイル名を設定する。
指定したディレクトリ名でディレクトリを生成し、そのディレクトリ内に指定したファイル名のファイルを生成する(例:dir1/dir2/config.txt)。
ディレクトリは5階層まで設定することができ、'/'で階層を区切る。 TYPEに'config'を指定したときのみCONFIG_NOが有効になり、CONFIG_NOを省略した場合は起動中のconfigがアップロードの対象になる。
なお、CONFIG_NOはconfig多重化機能に対応した機種でのみ設定することができる。
[初期値]
なし
○HTTPアップロード先URLの設定
[書式]
http upload url URL
no http upload url [URL]
[設定値]
URL ... アップロード先のURL
[説明]
HTTPアップロード機能で使用するサーバのURLを設定する。
入力形式は "http://サーバのIPアドレスあるいはホスト名/パス名" という形式となる。
サーバのポート番号が80以外の場合は、"http://サーバのIPアドレスあるいはホスト名:ポート番号/パス名" という形式で、URLの中に指定する必要がある。
サーバではcgiを許可するよう設定にする必要があり、アップロードを受け入れるためのcgiを実行させる必要がある。
[初期値]
なし
○HTTPアップロードを許可するか否かの設定
[書式]
http upload permit SW
no http upload permit [SW]
[設定値]
SW
on ... HTTPアップロードを許可する
off ... HTTPアップロードを許可しない
[説明]
HTTPアップロードを許可するか否かを設定する。
[初期値]
off
○HTTPアップロードのタイムアウト時間の設定
[書式]
http upload timeout TIME
no http upload timeout [TIME]
[設定値]
TIME ... 1-180[秒]
[説明]
HTTPアップロードでタイムアウトするまでの時間を設定する。
[初期値]
30
○HTTPアップロードのリトライの間隔と回数の設定
[書式]
http upload retry interval INTERVAL COUNT
no http upload retry interval [..]
[設定値]
INTERVAL ... 1-60[秒]
COUNT ... 1-10
[説明]
HTTPアップロードに失敗したときのリトライ間隔と時間を設定する。
[初期値]
INTERVAL=30 COUNT=5
○HTTPアップロードで使用するプロキシサーバの設定
[書式]
http upload proxy PROXY [PORT]
no http upload proxy [..]
[設定値]
PROXY ... プロキシサーバ
PORT ... 1-65535
[説明]
HTTPアップロードで使用するプロキシサーバを設定する。
[初期値]
なし
○HTTPアップロードの実行
[書式]
http upload go
[説明]
HTTPアップロードを実行する。
アップロードに失敗した場合、http upload retry intervalコマンドの設定に基づいてリトライをする。
○HTTPアップロード機能に関連するアラーム音を鳴らすか否かの設定
[書式]
alarm http upload SW
no alarm http upload [..]
[設定値]
SW
on ... 鳴らす
off ... 鳴らさない
[説明]
HTTPアップロード機能に関連するアラーム音を鳴らすか否かを選択する。
[初期値]
on

[EOF]