Skip to content

Blog

C# 6 の新機能でプロパティの初期化をシンプルに書く

C# 6 の新機能 のひとつに『自動プロパティの初期化を書けるようになった』というものがあります。従来 〜 新機能を簡単にまとめると以下の通りです。

  1. 従来のプロパティ実装ではコードが長くなりがち
  2. 自動プロパティを使うとコードは短くなるが、初期値を指定出来ない
  3. C# 6 の拡張を使うと、自動プロパティに初期値を指定出来るようになった

C# 6 の新機能でシンプルに文字列を埋め込む

C# 6 で追加された新機能 は川俣晶さんの著作「C# 6 実践的プログラミング[入門]講座」によくまとまっています。

新機能のひとつに『直接、文字列を埋め込めるようになった』というものがあります。この新機能を使うと string.Format や「+ による文字列の連結」を多用することなく、シンプルに記述することが出来るようになります。

acitoolkit を使って Cisco ACI から Subnet 情報一覧を取得する

Cisco ACI 標準の Web 管理画面では Bridge Domain ごとに設定した Subnet 情報を一覧で見ることが出来ません。同一 Tenant 内であれば下図のように Bridge Domain 配下の Subnet をひとつひとつ展開し、アドレスを表示させる… ということも不可能ではありません。

file

ただし Bridge Domain の数が多くなれば「ひとつひとつ展開する」のは現実的ではありません。また、そもそも複数 Tenant の Bridge Domain / Subnet 情報を一度に表示させることは出来ません。そこで acitoolkit を使って「全 Tenant の Subnet 情報を一覧表示するスクリプト」を書いてみました。今回のスクリプトには以下のような特徴があります。

  1. 全 Tenant の Subnet 一覧を表示する
  2. Subnet が所属する Tenant / Application Profile / Bridge Domain 情報も一覧表示する
  3. Subnet の Scope 情報も表示する
  4. アドレスを持たない Bridge Domain 情報は「アドレス欄が空」として表示する
  5. 複数のアドレスを持つ Bridge Domain は、1 行 = 1 アドレスとして複数行表示する
  6. Bridge Domain が EPG に関連付けられていない場合は表示しない

CCR 1009 にフルルートを持たせてみる(失敗)

MikroTik の CCR1009 に BGP のフルルートを持たせるテストを実施してみました。対向側は GoBGP を使いました。残念ながら、結果は以下の通りです。

  1. Peer Up から 30 秒程で約 11.5 万経路を受信する。ここまでは順調
  2. それ以降、なぜか 1 経路も受信しなくなる…
  3. Peer Up から 6 〜 8 分後に「hold timer expired」で Peer Down し、最初からやり直し
  4. CPU 使用率は常に低いまま、メモリ使用率もまだまだ空き容量があるように見える
  5. RouterOS のバージョンは v6.32.2

CCR 側が悪いのか、GoBGP 側が悪いのか、切り分けはこれからです。

show コマンド実行時の VRF 指定を省略する(※ IOS-XR 限定)

VRF を設定している環境で show コマンド実行する場合、都度、VRF を指定するのは煩わしいものです。IOS や IOS-XE には実装されていないようなのですが、ASR9000 で使われている IOS-XR では「明示的に指定しなかった場合の VRF」を set default-vrf で指定しておくことが出来ます。今回はこのコマンドの動作を確認します。尚、set default-vrf は 1 セッションでのみ、有効です。例えば SSH セッションを切断して再ログインしなおすと初期状態(= set default-vrf の指定が無い状態)に戻ります。

sudo でリダイレクトするには

sudo の実行結果をリダイレクトしようとするとエラーになります。

1
2
$ sudo echo "TEST" > /root/test.txt
-bash: /root/test.txt: Permission denied

このような場合は sudo sh -c の引数として一連のコマンドを実行します。

1
$ sudo /bin/sh -c 'echo "TEST" > /root/test.txt'

参考までに、「-c」オプションは man によると以下のように書かれています。

-c Read commands from the command_string operand instead of from the standard input. Special parameter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands.

CoreLinux 6.3 を VIRL に登録する

Tiny Core Linux はフットプリントが非常に小さい Linux ディストリビューションで、Cisco VIRL のような仮想化された検証環境内で複数インスタンスを立ち上げても軽快に動作する、という特徴があります。用途に応じて幾つかの種類があります。参考として記載したサイズは 6.3 用 ISO イメージのサイズです。

  1. Core
    • 9MB 程度。CLI だけの、最小環境での利用を想定。
  2. TinyCore
    • 15MB 程度。GUI(X)を含む。
  3. CorePlus
    • 84MB 程度。TinyCore に様々なパッケージを追加している。

追加パッケージも数多く提供されているので Core をベースにパッケージを追加し、カスタマイズしていくのも簡単です。今回は Core を VIRL に登録してみます。