REST APIを使ってユーザ登録を半自動化する

 

  1. 目的
    アプライアンス製品を扱っていると、ユーザ登録まで行った状態でお客様へ納品することがあると思います。今回は、大量のユーザ登録を行わなければならなくなった時を想定し、REST APIでのユーザ登録機能を利用してユーザ登録を半自動化することが目的です。
    ※以降は素人の浅知恵で考えたものですのでご注意ください。

  2. 環境
    Cisco DEVNET Sandbox のStealthwatch
    ・Windows10
    Excel
    curl(Windows10に標準でインストールされているもの)
    コマンドプロンプト
  3. 想定フロー
    (1)Excelでユーザ管理表を作成(ユーザ名、パスワード、ロールなどのパラメータ管理表)
    (2)Excelからjsonファイルを生成する
    (3)batファイルを実行し、REST APIの実行(REST APIの引数としてjsonを指定)
    ※今回は(3)の部分をとりあげます

  4. batファイルの中身
    curl -s -k -c cookies.txt -d "username=ユーザ名&password=パスワード" https://IPアドレス/token/v2/authenticate

    for %%i in (*.json) do (
        curl -k -b cookies.txt -H "Content-type: application/json" -X POST --data "@%%i" https://IPアドレス/smc-users/rest/v1/user
    )
    pause 
    1行目では認証を行っています。
    3行目以降ではbatファイルが存在するフォルダにある「.json」ファイルの数だけユーザ登録処理を実行しています。
    4行目では、「--data "@%%i"」を指定することで、フォルダに存在するjsonファイル名をREST APIに引き渡しています。ここでポイントとなるのは、json形式で直接記述するのではなく、jsonファイルを引数に指定していることです。

  5. jsonファイルの中身
    jsonファイルの中身は以下のようになっています。
    {
      "userName""test2",
      "fullName""test2",
      "emailAddress""",
      "authenticationServiceName""local",
      "dataRoleId"0,
      "functionRoleIds": [0],
      "webFunctionRoleIds": [1],
      "password""パスワード",
      "isAdmin"true
    }
  6. 参考資料

    Cisco DevNet: APIs, SDKs, Sandbox, and Community for Cisco Developers

    https://developer.cisco.com/docs/stealthwatch/enterprise/#!user-management-api

    qiita.com

     

  7. 愚痴
    StealthwatchのREST APIのドキュメントが分かりにくかった。
    StealthwatchのREST APIのドキュメントは以下のような感じ。最初はユーザ管理のREST APIのURLが分かりませんでした。。。

    f:id:kmwti:20200921170724p:plain

    で、どこにURLが書いてあるかというと、上記画像にある「GET」とか「POST」のところをクリックすると出てくる以下の画面の「Try it」を選択した後に表示される画面に書いてあった。。

    f:id:kmwti:20200921171100p:plain

    f:id:kmwti:20200921171223p:plain

  8. 余談
    jsonファイルに複数ユーザー書いておけば、一気に登録できるかと思ったけど、できなかった。REST APIが1ユーザずつの登録にしか対応していないかもしれない。(それかjsonの書き方が悪かった?)
    とりあえずは、batで複数ファイルを繰り返し処理するようにして解決した。

英語技術書の電子書籍(epub)から日本語訳した電子書籍を作る方法

需要はほとんどないと思いますが、現状英語版しか存在しない「CCNP and CCIE Enterprise Core ENCOR 350-401 Official Cert Guide」を例にして、日本語訳した電子書籍を作成する方法(私なりの)について書きます。

なお、本記事中に出てくる画像中に出てくる書籍の内容は「CCNP and CCIE Enterprise Core ENCOR 350-401 Official Cert Guide」より引用したものです。

【用意するもの】

・PC

epub作成/編集ソフト Sigil Ebook

・Sigil Ebookと連携してepubを編集できるWYSIWYGエディターPageEdit

・編集したい電子書籍(epub)

※Sigil EbookとPageEditは以下が公式サイト

sigil-ebook.com

 

【手順】

  1. Sigil Ebookのファイルメニューから「開く」を選択する

    f:id:kmwti:20200419215737p:plain

  2. ブックブラウザーで編集したい.xhtmlファイルをダブルクリックして開く。ちなみにOfficial Cert Guideの場合は、「chXX.xhtml」(XXは章番号)が各章のファイルになっています。

    f:id:kmwti:20200419220102p:plain

  3. 外部xhtmlエディターを起動ボタンを押して、PageEditを起動する

    f:id:kmwti:20200419220620p:plain

    なお、事前に設定で外部xhtmlエディタを指定しておく必要があります。

    f:id:kmwti:20200419220801p:plain

  4. PageEditが起動するとepubをビューアで表示したときと同様に表示されます。

    f:id:kmwti:20200419221325p:plain

    ※「CCNP and CCIE Enterprise Core ENCOR 350-401 Official Cert Guide Chapter 1. Packet Forwadingより引用」
  5. 英文をDeepL翻訳やGoogle翻訳で日本語に訳し、意味の通じる文章でなければ修正して英語を上書き。

    f:id:kmwti:20200419222020p:plain

  6. PageEditで保存すると、Sigil Ebookに内容が反映される。Sigil Ebookでも保存すると、epubファイルが上書きされる。

【備考】

epubファイルは決められたファイル構造でzipファイル化されたファイルなので、7-zipなどで解凍すれば、xhtmlファイル等は普通のエディタでも開くことは可能です。

Wiresharkのキャプチャフィルタ設定の構文メモ

【ネットワークを指定する場合】

net 192.168.11.0/24

「net」を指定することでネットワークアドレスを指定することができる。

 

【送信元IPが192.168.11.0/24のネットワーク以外 かつ 送信元IP又は宛先IPが116.223.211.0/24のネットワーク以外の時キャプチャさせたい場合】

not src net 192.168.11.0/24 && not net 116.223.211.0/24

 

epubの文章をGoogle翻訳で翻訳してくれるアプリ

洋書の電子書籍を買ったけど、英語は中学校1年生の1学期レベルなので、翻訳してくれるアプリを探した結果見つかったのが、これ。

 

mu-epub-reader

https://github.com/azu/mu-epub-reader/releases

 

epubの内容をGoogle翻訳したものを表示してくれる!

 

長時間パケットキャプチャするために役立ちそうなWiresharkの設定

 

(1)キャプチャサイズを指定する。

  defaultのままだとすべてキャプチャしてしまうため、長時間キャプチャするとファイルサイズが大きくなる。先頭からのキャプチャサイズを少なくすることでファイルサイズを節約できる。

f:id:kmwti:20200224185458p:plain

 

(2)バッファサイズを変更する。

  ネットワークの通信料が多く、パケットロスが発生するような場合は増やす。

 

(3)CUI(tshark)でキャプチャする。

  長時間キャプチャしているとWiresharkが不安定になりやすい。CUIでキャプチャすればマシかも?

 

(4)定期的にキャプチャファイルに保存する。

  長時間連続でキャプチャしていると確実にメモリが足りなくなり、Wiresharkがおちるため、定期的にファイル保存する。

 

f:id:kmwti:20200224190808p:plain

 

 

Wiresharkが使えない環境の場合、代替ソフトとしては「tcpdump」が使えそう

set cos コマンドについて2

IOSのコマンドリファレンスには、

set cos コマンドは、インターフェイスの出力方向に対応付けられたサービス ポリシーでのみ使用できます。インターフェイスが受信するパケットは、CoS 値で設定できません。

と書いてあったけど、IOS XEのコマンドリファレンスにはそんなこと書いていない。

けど、VIRLのCSR1000vでインターフェイスの入力方向に対応付けられたサービスポリシーに適用しようとすると、

Set cos not supported in input policy

が表示されて適用できない。

Catalyst 3850やCatalyst 3650の実機でも一緒なのかな?

Catalyst 3650ではset cosコマンドは、インターフェイスの入力方向に対応付けられたサービスポリシーに適用可能でした。

set cos コマンドについて

ciscoのルータ、スイッチで使用するQos関係のコマンド「set cos 数字」についてのメモ。

 

policy-map のclassに

set cos 5

 

などと設定した後、そのpolicy-mapをインターフェースに

service-policy input クラス名

と設定して着信パケットにCos値を設定しようとすると

Set cos not supported in input policy

と表示されて設定できない。

 

CISCOのコマンドリファレンスに次のように記載されている

set cos コマンドは、インターフェイスの出力方向に対応付けられたサービス ポリシーでのみ使用できます。インターフェイスが受信するパケットは、CoS 値で設定できません。

https://www.cisco.com/c/ja_jp/td/docs/ios-xml/ios/qos/command/qos-cr-book/qos-cr-book_chapter_01000.html#wp3792057054

 

というわけで、着信パケットにcos値は設定できない。