kakkotetsu

NW 機器の自前構成情報管理 (ruby-nmap+SNMP で Discovery ~ Ansible Dynamic Inventory 連携) (original : 2015/12/15)

この記事は某所で 2015/12/15 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。(以下一例)

  • Ansible のバージョン 1.8 系、今となっては古い

.

概要

NetOpsCoding Advent Calendar 2015 の 2015/12/15 分エントリです。 Ansible Dynamic Inventory で検索してこれにぶつかった人、ごめんなさい。そこはオマケ程度です。

本項でやること

  • Nmap と SNMPruby で操作して、手っ取り早く NW 機器の構成情報を取得~ JSON 形式で吐き出す
    • 最後に書いているが、自前で書かなくても OSS で同じことは出来るものはある
    • Nmap の ruby 版ライブラリ紹介
  • 上記ファイルを構成情報マスタとみなして、Ansible の dynamic inventory と連携する

モチベーション

  • 仮想マシンの構成管理ソフトは割とあるけれど、物理含めた NW 機器も統合的に…となると選択肢は少ない…
  • Nmap の fingerprint (OS検出)みたいなことも NW 機器相手に高精度でやりたい
  • 色々なミドルウェアで hosts ファイル的な異なるフォーマットの設定ファイルを求めてくるが、手っ取り早く生成したい
  • 大袈裟な仕組みは使いたくない
  • 2015/11/19 に Nmap 7.0 がリリースされたので使わなきゃ(使命感)

前段

Nmap

言わずと知れた OSS ツールで、以下のような機能があります。超優れもの!

  • Host Discovery | 公式
    • 対象 NW を ARG で食わせたり、テキストファイルに羅列して食わせたり
    • 出力は xml ファイルや stdout
    • ついでに名前解決(逆引き)までしてくれる(hosts ファイルでも DNS サーバでも resolve 設定に従う感じで)
  • OS Detection(fingerprint) | 公式
    • ポートスキャンの結果などから、対象機器の OS を類推する
  • etc etc

まあ 公式ドキュメントのイントロ を見れば分かるでしょう。
インフラ屋さんだと、ファイアウォールやら iptables やらのテストや、簡易な脆弱性診断で使ったりで馴染み深いのでは。
監視ソフトの Discovery 機能なんかでも、内部的に Nmap を呼んでいるものがあります。  

基本的にはシェルから扱うのですが、GUI ツールであるZenmapもあります。

ruby-nmap

上記公式からの抜粋↓

A Rubyful interface to the Nmap exploration tool and security / port scanner.

以下のようなことができる Nmap の ruby 版ライブラリです。(作者は異なるものの、同じような機能を持つ Python 版や Perl 版ライブラリも存在する)

  • Host Discovery のオプション群を分かりやすい表現で書ける
  • Host Discovery で生成された xml をパース
    • xml のパースを自前でやらなくて済むってだけで、嬉しくないですか。僕は嬉しい。

公式の Examples を見ると一目瞭然でしょう。

Ruby SNMP

SNMP を扱える ruby 版ライブラリです。(雑)
割と日本語記事も多いし、メジャーなやつでしょう。

Ansible Dynamic Inventory

他の場所に構成管理マスタがあり、Ansible の hosts ファイルを静的に書くと二重管理になるような環境で、構成管理マスタから hosts 情報をとってくる…という機能。

Discovery 環境準備

Discovery サーバ環境情報

Discovery を動かすサーバは以下です。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.6)
bundler (1.10.6)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
test-unit (3.0.8)

あと、このサーバから network reachable な NW 機器をいくらか動かしておきます。(本項では同一セグメント)

Nmap 7.0 インストール

以下公式手順に従います。

Download は以下から。

こんな感じでいけるでしょう。

$ sudo -E apt-get install libssl-dev
$ cd /var/tmp/
$ wget https://nmap.org/dist/nmap-7.00.tar.bz2
$ bzip2 -cd nmap-7.00.tar.bz2 | tar xvf -

$ ls -al
total 8724
drwxrwxrwt  3 root  root     4096 Dec  5 14:38 .
drwxr-xr-x 11 root  root     4096 Nov  7 17:42 ..
drwxr-xr-x 22 kotetsu kotetsu  4096 Nov 20 01:19 nmap-7.00
-rw-rw-r--  1 kotetsu kotetsu 8918906 Nov 20 05:23 nmap-7.00.tar.bz2

$ cd nmap-7.00/
$ ./configure
$ make
$ sudo -E make install

(略)

NMAP SUCCESSFULLY INSTALLED

$ nmap --version

Nmap version 7.00 ( https://nmap.org )
Platform: x86_64-unknown-linux-gnu
Compiled with: nmap-liblua-5.2.3 openssl-1.0.1f nmap-libpcre-7.6 nmap-libpcap-1.7.3 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

ruby-nmap / snmp の gem インストール

どちらも gem install 一発で入ります。
ruby-nmapxml を扱う関係上、依存関係に Nokogiri があります。なので、インストールで躓いたらググって解決して下さい。

以下は bundler を使った場合の手順です。

$ cd
$ mkdir discovery
$ cd discovery/
$ bundle init
Writing new Gemfile to /home/kotetsu/discovery/Gemfile

Gemfile を以下のように編集

$ cat Gemfile
# A sample Gemfile
source "https://rubygems.org"

#
gem 'ruby-nmap'
gem `snmp`


$ bundle install --path vendor/bundle
$ cat Gemfile.lock
GEM
  remote: https://rubygems.org/
  specs:
  mini_portile2 (2.0.0)
  nokogiri (1.6.7)
    mini_portile2 (~> 2.0.0.rc2)
  rprogram (0.3.2)
  ruby-nmap (0.8.0)
    nokogiri (~> 1.3)
    rprogram (~> 0.3)
  snmp (1.2.0)

PLATFORMS
  ruby

DEPENDENCIES
  ruby-nmap
  snmp

BUNDLED WITH
   1.10.6

NW 機器側の SNMP 設定

今回、OS検知もどきとして SNMP Get で NW 機器の sysDescr を取得します。
機種依存なく NW 機器の OS を知りたいならば、まあこれしかないでしょう、ってことで。

あと、ラック情報とかも纏めて取れるようにしておくと良いよね、ってことでそれは sysLocation に設定しておきます(本項では全部仮想環境なのでアレな感じですが)。

何機種分か設定例を。

  • JUNOS 例

snmp description とかを設定していると、OS 情報(デフォルト値)をとれなくなってしまうので注意。

kotetsu@vsrx01> show configuration | display set | match snmp
set snmp location KotetsuNoteVB
set snmp community KOTETSU_NW
  • Arista 例
vEOS-spine001#show run | inc snmp
snmp-server location KotetsuNoteVB
snmp-server community KOTETSU_NW ro
  • VyOS 例
kotetsu@vtep-vyos01:~$ show configuration commands | match snmp
set service snmp community 'KOTETSU_NW'
set service snmp location 'KotetsuNoteVB'

Discovery スクリプト作成~配置

ディレクト

以下のように適当なディレクトリを用意して、

$ mkdir scripts
$ cd scripts/

後述の 3 つのファイルを配置します。

スクリプト本体

ruby-nmapRuby SNMP を使って NW 機器の構成情報を収集して、JSON ファイルに吐き出すサンプルスクリプトです。

# encoding: utf-8

#
# Usage:
#  bundle exec ruby discovery_nwdevs.rb <setting.yml>
#

require 'nmap/program'
require 'nmap/xml'
require 'snmp'
require 'yaml'
require 'json'


#
# SNMP Get method
#
def snmp_get_system(target_ip, snmp_params)
  manager = SNMP::Manager.new(
    :host => target_ip,
    :port => 161,
    :version => :SNMPv2c,
    :community => snmp_params["community"],
    :timeout => 1,
    :retries => 1
  )

  # sysName にはホスト名
  # sysDescr には機種やバージョン情報
  # sysLocation は(設定していれば)設置場所
  # が入っている筈なので、それをとる
  ret = Hash::new
  ret[:sysname] = manager.get_value(snmp_params["oid_sysname"]).to_s rescue ""
  ret[:sysdesc] = manager.get_value(snmp_params["oid_sysdesc"]).to_s rescue ""
  ret[:syslocation] = manager.get_value(snmp_params["oid_syslocation"]).to_s rescue ""
  manager.close

  return ret
end



#
# main
#
begin

  # 外出ししている情報 YAML ファイルをロード
  params = YAML.load_file(ARGV[0])

  # Nmap の Host Discovery をして xml ファイルに書き出す
  # ポートスキャンは UDP/161 のみに限定して、SNMP Get で情報が取得可能かどうかを見ておく
  # NW 機器なんて Nmap の fingerprint 機能に頼るよりは、SNMP Get で見た方が確実なので、fingerprint もしない
  Nmap::Program.scan do |nmap|
    nmap.syn_scan = false
    nmap.udp_scan = true
    nmap.service_scan = false
    nmap.os_fingerprint = false

    nmap.xml = params["nmap_params"]["xml_file"]
    nmap.verbose = true

    nmap.ports = []
    unless params["nmap_params"]["scan_udp_ports"].nil? then
      params["nmap_params"]["scan_udp_ports"].each do |port|
        nmap.ports << port["port"]
      end
    end

    # Discovery の対象とする NW アドレスを羅列したファイル
    nmap.target_file = params["nmap_params"]["scan_target_files"]["targetfile"]
  end


  # 反応があったノード(up host)の情報(Hash)を格納
  array_hosts = []

  # Nmap の Host Discovery で生成された xml ファイルを走査
  # 反応があったノード(up host)を取得し、
  # UDP/161 が Open 判定されていたら SNMP で追加情報取得する
  Nmap::XML.new(params["nmap_params"]["xml_file"]) do |xml|
    xml.each_up_host do |host|
      hash_host = {}
      hash_snmp_info = {}

      hash_host[:ipaddr] = host.ipv4
      hash_host[:ptr] = host.hostname
      hash_host[:sysname] = ""
      hash_host[:sysdesc] = ""
      hash_host[:syslocation] = ""

      host.each_port do |port|
        if (port.number == 161) && (port.state == :open) then
          hash_snmp_info = snmp_get_system(host.ipv4, params["snmp_params"])
          unless hash_snmp_info.nil? then
            hash_host[:sysname] = hash_snmp_info[:sysname]
            hash_host[:sysdesc] = hash_snmp_info[:sysdesc]
            hash_host[:syslocation] = hash_snmp_info[:syslocation]
          end
        end
      end
      array_hosts << hash_host
    end
  end


  # 収集したノードの情報を JSON 形式ファイルで吐き出す
  unless array_hosts.nil? then
    dir_result = File.expand_path(params["nmap_params"]["output_directory"])

    json_hosts = JSON.pretty_unparse(array_hosts)
    File.open("#{dir_result}/list_nwdev.json","w") do |file|
      file.write(json_hosts)
    end
  end


# なんか適切にエラーハンドリングしてください
rescue SNMP::RequestTimeout => e
  #
rescue StandardError => e
  puts e
  puts e.backtrace
ensure
  #
end

スクリプトの設定ファイル

前述のスクリプトに食わせる設定ファイルです。
別環境でスクリプトに手を加えず、設定ファイルだけ書き換えて使う…みたいなことを考えていたのですが…「標準 MIB の OID が変わるっていうのか?」なんて突っ込みは不可。

setting_discovery_nwdevs.yml

nmap_params :
  # nmap の -iL オプションで渡す discovery 対象を記載したファイル
  scan_target_files :
    targetfile : './target_nw.txt'
  # nmap の -PU -p オプションで渡す UDP ポートスキャン対象
  scan_udp_ports :
    - port : 161
  # nmap の -oX オプションで渡す、Host Discovery の output である xml ファイル
  xml_file : './scan.xml'
  # スクリプトの最終 output である JSON ファイルを生成するディレクトリ(nmap に渡すオプションではないので、nmap_params 配下にいるのは違和感ありますね…)
  output_directory : './'
snmp_params :
  # 動かす環境の NW 機器に設定してある SNMP community
  # 同じ環境の community ならきっと統一されているだろう、という前提のもと…
  community       : 'KOTETSU_NW'
  # SNMP Get 対象の OID たち
  oid_sysname     : '1.3.6.1.2.1.1.5.0'
  oid_sysdesc     : '1.3.6.1.2.1.1.1.0'
  oid_syslocation : '1.3.6.1.2.1.1.6.0'

Nmap input file

Nmap で Host Discovery する対象を羅列したファイル。
ruby-nmap は内部的に nmap に -iL オプションで食わせているだけなので、記法は Target Specification | Nmap 公式 を参照。

target_nw.txt

192.168.101.0/24  # mgmt NW

Discovery 実行~出力確認

スクリプト実行

こんな感じで。
Nmap でポートスキャンするには基本的には root 権限が必要なので、sudo しています。(以下公式の参考資料)

Discoveryスクリプト実行

$ sudo -E bundle exec ruby discovery_nwdevs.rb setting_discovery_nwdevs.yml

Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-05 14:11 JST
Initiating ARP Ping Scan at 14:11
Scanning 255 hosts [1 port/host]
Completed ARP Ping Scan at 14:11, 1.64s elapsed (255 total hosts)

Initiating Parallel DNS resolution of 255 hosts. at 14:11
Completed Parallel DNS resolution of 255 hosts. at 14:11, 0.04s elapsed

(略)

Read data files from: /usr/local/bin/../share/nmap
Nmap done: 256 IP addresses (5 hosts up) scanned in 2.14 seconds
           Raw packets sent: 513 (14.784KB) | Rcvd: 11 (836B)

生成ファイル確認

生成されたファイル

Nmap が生成した scan.xml と、スクリプトが生成した list_nwdev.jsonroot:root で吐き出されています。

$ ls -al
total 60
drwxrwxr-x 2 kotetsu kotetsu  4096 Dec  6 14:11 .
drwxrwxr-x 5 kotetsu kotetsu  4096 Dec  6 14:08 ..
-rw-r--r-- 1 kotetsu kotetsu  3129 Dec  6 14:04 discovery_nwdevs.rb
-rw-r--r-- 1 root    root      643 Dec  6 14:11 list_nwdev.json
-rw-r--r-- 1 root    root    34690 Dec  6 14:11 scan.xml
-rw-r--r-- 1 kotetsu kotetsu   281 Dec  6 14:01 setting_discovery_nwdevs.yml
-rw-rw-r-- 1 kotetsu kotetsu    28 Dec  6 11:07 target_nw.txt

Nmap が生成した xml ファイル

scan.xml の中身を軽く見ていきます。(この辺は、Nmap を使っている人ならよく知っているのでは)

  • 最初のほうで、実際に ruby-nmap が実行したコマンドオプションや Nmap の実行バージョン、実行時刻などが分かる
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?>
<!-- Nmap 7.00 scan initiated Wed Dec  6 14:11:37 2015 as: /usr/local/bin/nmap -sU -oX ./scan.xml -v -p 161 -iL ./target_nw.txt -->
<nmaprun scanner="nmap" args="/usr/local/bin/nmap -sU -oX ./scan.xml -v -p 161 -iL ./target_nw.txt" start="1449637897" startstr="Sat Dec  6 14:11:37 2015" version="7.00" xmloutputversion="1.04">
<scaninfo type="udp" protocol="udp" numservices="1" services="161"/>
<verbose level="1"/>
<debugging level="0"/>
<taskbegin task="ARP Ping Scan" time="1449378697"/>
<taskend task="ARP Ping Scan" time="1449378699" extrainfo="255 total hosts"/>
<taskbegin task="Parallel DNS resolution of 255 hosts." time="1449378699"/>
<taskend task="Parallel DNS resolution of 255 hosts." time="1449378699"/>
  • Down しているホストの情報が続く
<host><status state="down" reason="no-response" reason_ttl="0"/>
<address addr="192.168.101.3" addrtype="ipv4"/>
</host>
<host><status state="down" reason="no-response" reason_ttl="0"/>
<address addr="192.168.101.4" addrtype="ipv4"/>
</host>
  • Up しているホストの情報が続く
<host starttime="1449378697" endtime="1449378699"><status state="up" reason="arp-response" reason_ttl="0"/>
<address addr="192.168.101.30" addrtype="ipv4"/>
<address addr="52:54:00:76:24:2C" addrtype="mac" vendor="QEMU virtual NIC"/>
<hostnames>
<hostname name="vsrx01" type="PTR"/>
</hostnames>
<ports><port protocol="udp" portid="161"><state state="open" reason="udp-response" reason_ttl="64"/><service name="snmp" method="table" conf="3"/></port>
</ports>
<times srtt="24054" rttvar="34787" to="163202"/>
</host>

スクリプトが生成した JSON ファイル

  • Nmap が名前解決出来たもの(以下例では 192.168.101.30 のみ名前登録してあった)は xmlhostnameptr に格納
  • sysnamesysdescsyslocationSNMP Get で取得した情報
  • Nmap で UDP 161 が Open していないと判断した 192.168.101.172 に関しては、ほとんど情報は取得できていない
    • まあ、その IP アドレスが何らかの機器に使われている、ということくらい

list_nwdev.json

[
  {
    "ipaddr": "192.168.101.30",
    "ptr": "vsrx01",
    "sysname": "vsrx01",
    "sysdesc": "Juniper Networks, Inc. vsrx internet router, kernel JUNOS 15.1X49-D15.4, Build date: 2015-07-31 03:30:01 UTC Copyright (c) 1996-2015 Juniper Networks, Inc.",
    "syslocation": "KotetsuNoteVB"
  },
  {
    "ipaddr": "192.168.101.50",
    "ptr": null,
    "sysname": "vEOS-spine001",
    "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS",
    "syslocation": "KotetsuNoteVB"
  },
  {
    "ipaddr": "192.168.101.52",
    "ptr": null,
    "sysname": "vEOS-leaf001",
    "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS",
    "syslocation": "KotetsuNoteVB"
  },
  {
    "ipaddr": "192.168.101.71",
    "ptr": null,
    "sysname": "vtep-vyos01",
    "sysdesc": "Vyatta VyOS 1.1.1",
    "syslocation": "KotetsuNoteVB"
  },
  {
    "ipaddr": "192.168.101.172",
    "ptr": null,
    "sysname": "",
    "sysdesc": "",
    "syslocation": ""
  }
]

連携例 ~Ansible の Dynamic Inventory~

やること

先に生成した JSON ファイルを「構成情報マスタ」とみなして連携する例として Ansible の Dynamic Inventory で使ってみます。
NW 機器の中から Arista だけを抜き出して、Arista 用の Role を使った Playbook を実行するです。

環境

横着して、昔(2014/12)作った以下環境を流用して Arista をターゲットに使います。

2015/12 現在だと、Ansible は 2.1.0 とかまで出ているし、ansible-eos (Arista 用の Role)もかなり更新が入っていますが…。

Dynamic Inventory サンプルスクリプト

先に作った JSON ファイルをパースして、最低限動くだけのサンプルです。   要するに sysDescr で機種を仕分けているだけ。

dynamic_nwdevs.rb

#! /usr/bin/env ruby
# encoding: utf-8

require 'json'

FILE_INVENTORY = '/home/kotetsu/discovery/scripts/list_nwdev.json'


begin
  
  if (ARGV[0] && ARGV[0] == '--list') then
    ret = {}
    
    list_junos = []
    list_arista = []
    list_vyos = []

    JSON.load(File.open(FILE_INVENTORY).read).each do |nwdev|
      case nwdev["sysdesc"]
      when /^Juniper.*JUNOS.*/
        list_junos << nwdev["ipaddr"]
      when /^Arista Networks EOS.*/
        list_arista << nwdev["ipaddr"]
      when /^Vyatta VyOS/
        list_vyos << nwdev["ipaddr"]
      else
        #
      end
    end

    ret["junos_all"] = list_junos.dup unless list_junos.size == 0
    ret["arista_all"] = list_arista.dup unless list_arista.size == 0
    ret["vyos_all"] = list_vyos.dup unless list_vyos.size == 0
    puts JSON.pretty_unparse(ret)

  elsif (ARGV[1] && ARGV[0] == "--host") then
    JSON.load(File.open(FILE_INVENTORY).read).each do |nwdev|
      if (
        nwdev["sysname"] =~ Regexp.new(ARGV[1]) ||
        nwdev["ipaddr"] =~ Regexp.new(ARGV[1]) ||
        nwdev["ptr"] =~ Regexp.new(ARGV[1])
      ) then
        puts JSON.pretty_unparse(nwdev)
      end
    end
  end


rescue Exception => e
  puts e
  puts e.backtrace
end

公式のサンプルスクリプトでは Python が圧倒的に多いですが、よくある「所定の引数をつけて実行した時に、所定のOutputを返せば良い」系のやつなので、言語は何で書いても良いです。(この程度ならシェルスクリプトでも)

で、これを実行すると以下の感じ。

$ ./dynamic_nwdevs.rb --list
{
  "junos_all": [
    "192.168.101.30"
  ],
  "arista_all": [
    "192.168.101.50",
    "192.168.101.52"
  ],
  "vyos_all": [
    "192.168.101.71"
  ]
}

$ ./dynamic_nwdevs.rb --host vEOS-spine001
{
  "ipaddr": "192.168.101.50",
  "ptr": null,
  "sysname": "vEOS-spine001",
  "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS",
  "syslocation": "KotetsuNoteVB"
}

_meta を出さないので、無駄な処理が走るのですがね。まあローカルのファイル読んでいるテスト環境なので…(モゴモゴ)
その辺は Ansible meetuptokyo 2015 Dynamic Inventory | SlideShare のスライド 10~12 を見ましょう。

Arista 用のサンプル Playbook

  • role で Arista 公式の Role を呼んでいる完全に Arista 専用の Playbook
  • hosts では先の ./dynamic_nwdevs.rb --list で出力された arista_all という Arista 全台グループを指定
  • show version して stdout するだけ

playbook_sample_arista.yml

- name: eos nodes
  hosts: arista_all
  gather_facts: no
  sudo: true

  vars:
    eapi_username: kotetsu
    eapi_password: kotetsu
    eapi_protocol: http

  roles:
    - role: arista.eos

  tasks:
    - name: show version
      action: eos_command
      args: {
         commands: [
           "show version"
         ],
         eapi_username: "{{ eapi_username }}",
         eapi_password: "{{ eapi_password }}",
         eapi_protocol: "{{ eapi_protocol }}"
      }
      register: output_version

    - debug: var=output_version

Playbook 実行

レッツゴー
(-i で呼んでいるのが hosts ファイルではなくて、先の dynamic_nwdevs.rb なのがポイント)

DynamicInventoryでPlaybook実行

$ ansible-playbook playbook_sample_arista.yml -f 10 -u ansible -i dynamic_nwdevs.rb

PLAY [eos nodes] **************************************************************

TASK: [arista.eos | check if running on eos node] *****************************
ok: [192.168.101.50]
ok: [192.168.101.52]

TASK: [arista.eos | collect eos facts] ****************************************
ok: [192.168.101.50]
ok: [192.168.101.52]

TASK: [arista.eos | include eos variables] ************************************
ok: [192.168.101.50]
ok: [192.168.101.52]

TASK: [arista.eos | check for working directory] ******************************
ok: [192.168.101.52]
ok: [192.168.101.50]

TASK: [arista.eos | create source] ********************************************
skipping: [192.168.101.52]
skipping: [192.168.101.50]

TASK: [arista.eos | check if pip is installed] ********************************
ok: [192.168.101.50]
ok: [192.168.101.52]

TASK: [arista.eos | copy pip extension to node] *******************************
skipping: [192.168.101.50]
skipping: [192.168.101.52]

TASK: [arista.eos | create tmp config file to load pip] ***********************
skipping: [192.168.101.50]
skipping: [192.168.101.52]

TASK: [arista.eos | load pip eos extension] ***********************************
skipping: [192.168.101.52]
skipping: [192.168.101.50]

TASK: [arista.eos | copy required libraries to node] **************************
ok: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz)
ok: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz)

TASK: [arista.eos | install required libraries] *******************************
ok: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz)
ok: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz)

TASK: [arista.eos | install jsonrpclib] ***************************************
skipping: [192.168.101.50]
skipping: [192.168.101.52]

TASK: [arista.eos | install required libraries and dependencies] **************
skipping: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz)
skipping: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz)

TASK: [show version] **********************************************************
ok: [192.168.101.52]
ok: [192.168.101.50]

TASK: [debug var=output_version] **********************************************
ok: [192.168.101.50] => {
    "output_version": {
        "changed": false,
        "invocation": {
            "module_args": "",
            "module_name": "eos_command"
        },
        "output": [
            {
                "command": "show version",
                "response": {
                    "architecture": "i386",
                    "bootupTimestamp": 1449902847.6,
                    "hardwareRevision": "",
                    "internalBuildId": "a6bbeeb3-95b7-42bc-9721-266f9bff424e",
                    "internalVersion": "4.14.8M-2475814.4148M",
                    "memFree": 20516,
                    "memTotal": 996140,
                    "modelName": "vEOS",
                    "serialNumber": "",
                    "systemMacAddress": "08:00:27:31:60:65",
                    "version": "4.14.8M"
                }
            }
        ]
    }
}
ok: [192.168.101.52] => {
    "output_version": {
        "changed": false,
        "invocation": {
            "module_args": "",
            "module_name": "eos_command"
        },
        "output": [
            {
                "command": "show version",
                "response": {
                    "architecture": "i386",
                    "bootupTimestamp": 1449902847.71,
                    "hardwareRevision": "",
                    "internalBuildId": "a6bbeeb3-95b7-42bc-9721-266f9bff424e",
                    "internalVersion": "4.14.8M-2475814.4148M",
                    "memFree": 46872,
                    "memTotal": 996140,
                    "modelName": "vEOS",
                    "serialNumber": "",
                    "systemMacAddress": "08:00:27:e2:d0:f4",
                    "version": "4.14.8M"
                }
            }
        ]
    }
}

PLAY RECAP ********************************************************************
192.168.101.50             : ok=10   changed=0    unreachable=0    failed=0
192.168.101.52             : ok=10   changed=0    unreachable=0    failed=0

Arista だけに処理が走りました。

おしまい

plus one

今回は Discovery との連携例として Ansible の Dynamic Inventory を使いましたが、Discovery は Nmap/SNMP だけの超単純な仕組みなので、他の仕組みとの連携も面倒なくいけるんですよな。
例えば、こんなのはよくやっているのではないでしょうか。

  • ここで生成した JSON ファイルをロードして
    • sysDescrcase で分けて、機種に応じた処理
      • 詳細な inventory 情報取得(シリアル番号とかラインカード/SFP構成とか)
        • expect で show inventory とか netconf の <get-inventory> とか SNMP Get とか独自 API とか
          • 必要に応じて事前にポートスキャンで TCP/830 とか TCP/22 もしておくとか
          • たまにシリアル番号を CLI でしか取得できないポンコツ箱があるんだよなぁ…
      • config 取得 (後述の rancid 方式でもよい)
        • discovery ~ config 取得 ~ バージョン管理コマンドも cron で回しておくと、増えた機器が勝手にバックアップ・バージョン管理される
      • 各種ミドルウェアの設定ファイル生成(サンプルスクリプトのアウトプットを JSON でなく、設定ファイル形式にするでも)
        • rancid
        • Ansible
          • hosts ファイル
          • Dynamic Inventory と連携
            • 本項で軽くやったやつ
        • 監視ソフト(auto discovery 的な機能がない)
          • 機種に応じた自前の plugin を指定して…とかも自動でやれる
      • 特定バージョンを対象とした
        • OS ファイル転送
        • 設定撒き
    • ptr が空で sysname を取得できたものに関して、内部 DNS コンテンツの設定生成(~追加)
    • sysDescsysname の組み合わせで条件付けて、待機系機器のみ云々
  • JSON ファイルに書き出した情報を SQL に放り込んで、WebUI なり API なりを提供
    • 前述の内容を実現するのに、踏み台サーバや監視サーバからも inventory 情報を取得したい、って思ったり
      • 別に rsync とかで撒いてもよいが
    • 実機から取得できる情報には限界があるし、人間が入力・更新したい情報もあるのでは(商用環境だと保守期限とか)
    • ありもの製品の WebUI は実運用要件を充たすようにカスタマイズできないから、自前で簡易で運用要件を充たすものを立てたほうが楽、とか
      • そういう思いから自前で作り込まれた社内システムとかには、文句たらたらで「ありもののパッケージ使えよ」とか言うのにね

所感

  • まあ、なんというか「何をマスタ情報にして、他コンポーネントとどういう連携をするか」は環境次第なので、こんな方法もあるよ、ってだけですな
  • 超メジャーな Nmap を使った Inventory の生成、なんてのは割とポピュラーな手法で、以下のようなものを使えば同じこと+アルファが出来ます(いずれも内部的には Nmap を使っている模様)
    • Open-AudIT
      • JSON, xlsx, pdf 形式などで情報をエクスポートできるらしい
      • 本項の Discovery レベルの話は全部できそう
    • ローレベルディスカバリ | Zabbix 2.2
      • SNMP 連携できるディスカバリって点では、物理 NW 機器を一元管理する場合には、これがマッチする気がする
  • ただまあ、もっと手軽に…とか、アウトプットの書式を任意に作りたい(他のミドルウェアで使う設定ファイル生成とか)とかのケースでは、使えるのではないでしょうかね
    • 生で Nmap 叩いて xml をサクッとパースすればライブラリさえ使う必要ないのですが…
  • Nmap 7.0 の新機能を一切触ってないじゃねぇか!

Juniper vSRX(15.1X) を VirtualBox で動かす (original : 2015/12/11)

この記事は某所で 2015/12/11 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。

  • Juniper さんの vSRX ダウンロード規約が変わっていそう (詳細は未確認)

.

概要

本項でやること

  • KVMVMware ESX 向けの 60 日間 trial 版が公開されている Juniper vSRX を VirtualBox に入れる
  • 公式にはサポートされない手順なので、自己責任で
  • JUNOS の基本的な操作は省略(ある程度知っている人向け)

環境情報

vSRX?

手順

vSRX イメージファイル取得

ovf 形式にファイル変換

  • 取得したovaファイルを ovf 形式にする (以下例では VMwarePlayer などに同梱されている ovftool を使用)
>ovftool.exe media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf
Opening OVA source: media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova
The manifest validates
Opening OVF target: \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf
Writing OVF package: \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf
Transfer Completed
Source is signed but could not verify certificate (possibly self-signed)
Completed successfully
media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf
media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide-disk1.vmdk
media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.mf

変換したファイルに小細工(インポートエラーが出ないように)

  • media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.mf ファイルは別ディレクトリに除外しておく
  • media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf の line 82 を以下のように上書き編集(%iid% -> 2)

編集前

            <Item ovf:configuration="4GvRAM">
              <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
              <rasd:Description>Memory Size</rasd:Description>
              <rasd:ElementName>Memory</rasd:ElementName>
              <rasd:InstanceID>%iid%</rasd:InstanceID>
              <rasd:ResourceType>4</rasd:ResourceType>
              <rasd:VirtualQuantity>4096</rasd:VirtualQuantity>

編集後

            <Item ovf:configuration="4GvRAM">
              <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
              <rasd:Description>Memory Size</rasd:Description>
              <rasd:ElementName>Memory</rasd:ElementName>
              <rasd:InstanceID>2</rasd:InstanceID>
              <rasd:ResourceType>4</rasd:ResourceType>
              <rasd:VirtualQuantity>4096</rasd:VirtualQuantity>

VirtualBox に ovf をインポート

  • ファイル -> 仮想マシンのインポート で先の編集した ovf ファイルを指定

f:id:kakkotetsu:20170513145149j:plain f:id:kakkotetsu:20170513145201j:plain

  • 以降の画面キャプチャはインポート後の設定からとってきたもの

f:id:kakkotetsu:20170513145216j:plain

f:id:kakkotetsu:20170513145222j:plain

f:id:kakkotetsu:20170513145227j:plain

f:id:kakkotetsu:20170513145235j:plain

f:id:kakkotetsu:20170513145240j:plain

f:id:kakkotetsu:20170513145245j:plain

  • どうやらアダプタータイプ は一回起動したあとは勝手に準仮想化ネットワーク(virtio-net)にされるようだ
  • アダプター 1が JUNOS 側から見ると fxp0 (管理用ポート)になる

f:id:kakkotetsu:20170513145259j:plain

f:id:kakkotetsu:20170513145303j:plain

コンソール画面から初期設定

  • 起動する
  • 無事に起動できたら、コンソールログインして以下を設定する
# root password の設定(必須)
set system root-authentication plain-text-password
 -> 対話型で入力

# ユーザ作成とパスワード設定
set system login user <username> class super-user
set system login user <username> authentication plain-text-password

# ssh 有効化
set system services ssh root-login deny
set system services ssh protocol-version v2

ssh して状態確認

--- JUNOS 15.1X49-D15.4 built 2015-07-31 02:20:21 UTC
kotetsu>
kotetsu> show version
Model: vSRX
Junos: 15.1X49-D15.4
JUNOS Software Release [15.1X49-D15.4]

kotetsu> show chassis hardware
Hardware inventory:
Item             Version  Part number  Serial number     Description
Chassis                                5028f7dddeb5      VSRX
Midplane
System IO
Routing Engine                                           VSRX RE
FPC 0                                                    Virtual FPC
  PIC 0                                                  Virtual GE
Power Supply 0

kotetsu> show system license
License usage:
                                 Licenses     Licenses    Licenses    Expiry
  Feature name                       used    installed      needed
  Virtual Appliance                     1            1           0    59 days

Licenses installed:
  License identifier: E420588955
  License version: 4
  Software Serial Number: 20150625
  Customer ID: vSRX-JuniperEval
  Features:
    Virtual Appliance - Virtual Appliance
      count-down, Original validity: 60 days

kotetsu> show configuration | display set
set version 15.1X49-D15.4
set system root-authentication encrypted-password "$1$8FV6oxYf$H0vFbn4hEjZEwb748.JxK0"
set system login user kotetsu uid 2000
set system login user kotetsu class super-user
set system login user kotetsu authentication encrypted-password "$1$w/Ff6i9v$1wW4Wrt8Xy04P8ee63/Hb."
set system services ssh root-login deny
set system services ssh protocol-version v2
set system services web-management http interface fxp0.0
set system syslog user * any emergency
set system syslog file messages any any
set system syslog file messages authorization info
set system syslog file interactive-commands interactive-commands any
set system license autoupdate url https://ae1.juniper.net/junos/key_retrieval
set security forwarding-options family mpls mode packet-based
set interfaces fxp0 unit 0 family inet address 192.168.101.30/24

おわり

  • インストールしただけなので別に…

bagpipe-bgp インストール~簡易動作確認 (original : 2015/11/08)

この記事は某所で 2015/11/08 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。

概要

本項でやること

  • bagpipe-bgp をインストールして軽く動作確認するところまでです
  • 一般的に OpenStack Neutron と組み合わせて使うようですが、ここでは OpenStack は登場しません
  • OSS で手軽に EVPN を試せそう、というのがモチベーションです

環境情報

$ uname -a
Linux as65000-l1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

手順

Python 各種パッケージインストール

  • 必要なパッケージをインストール

  • OS パッケージで入れる例

$ sudo apt-get install python-daemon python-bottle python-netaddr python-pip

bagpipe-bgp インストール

$ cd
$ git clone https://github.com/Orange-OpenSource/bagpipe-bgp.git
$ cd bagpipe-bgp/
$ git show
commit 216fee45fba40663dfd9b48bb31be74f5513f684
Author: Thomas Morin <thomas.morin@orange.com>
Date:   Fri Aug 28 17:00:53 2015 +0200

    devstack plugin fix

    (dumb omission of "then" in a bash statement...)


$ sudo python setup.py install

$ ls -al /usr/local/bin/bagpipe-*
-rwxr-xr-x 1 root root 175 Nov  8 01:28 /usr/local/bin/bagpipe-bgp
-rwxr-xr-x 1 root root 177 Nov  8 01:28 /usr/local/bin/bagpipe-bgp-cleanup
-rwxr-xr-x 1 root root 157 Nov  8 01:28 /usr/local/bin/bagpipe-fakerr
-rwxr-xr-x 1 root root 168 Nov  8 01:28 /usr/local/bin/bagpipe-looking-glass
-rwxr-xr-x 1 root root 166 Nov  8 01:28 /usr/local/bin/bagpipe-rest-attach

$ bagpipe-bgp --help
Usage: bagpipe-bgp [options] (see --help)

Options:
  -h, --help            show this help message and exit
  --config-file=CONFIGFILE
                        Set BGP component configuration file path
  --log-file=LOGFILE    Set logging configuration file path
  --no-daemon           Do not daemonize

bagpipe-bgp service 登録(~自動起動設定)

$ cd bagpipe-bgp/

$ ./install_bagpipe_bgp.sh
*** WARNING: This script must be run as root ***

$ sudo ./install_bagpipe_bgp.sh

$ sudo service bagpipe-bgp status
BGP component is running.
  • 自動起動したい場合は、サンプルが同梱されているので、これを配置すればよかろう(ここでは未実施)
$ ls -al bagpipe-bgp/etc/init.d/
total 16
drwxrwxr-x 2 kotetsu kotetsu 4096 Nov  8 01:25 .
drwxrwxr-x 3 kotetsu kotetsu 4096 Nov  8 01:25 ..
-rwxrwxr-x 1 kotetsu kotetsu 2518 Nov  8 01:25 bagpipe-bgp
-rwxrwxr-x 1 kotetsu kotetsu 1545 Nov  8 01:25 bagpipe-fakerr

bagpipe-bgp 設定ファイルの編集

メイン設定ファイル (/etc/bagpipe-bgp/bgp.conf)

  • /etc/bagpipe-bgp/bgp.conf
  • ネットワーク環境に合わせて [BGP] の項目を編集
    • iBGP しか使えないことに注意
$ ls -al /etc/bagpipe-bgp/
total 24
drwxr-xr-x  2 root root 4096 Nov  8 01:57 .
drwxr-xr-x 83 root root 4096 Nov  8 01:57 ..
-rw-r--r--  1 root root 3099 Nov  8 01:57 bgp.conf
-rw-rw-r--  1 root root 3099 Nov  8 01:25 bgp.conf.template
-rw-r--r--  1 root root 1615 Nov  8 01:57 log.conf
-rw-rw-r--  1 root root 1615 Nov  8 01:25 log.conf.template

$ cat /etc/bagpipe-bgp/bgp.conf
[BGP]
local_address=10.0.1.2
peers=10.0.1.1
my_as=65000
enable_rtc=False

(略)


$ diff /etc/bagpipe-bgp/bgp.conf /etc/bagpipe-bgp/bgp.conf.template
2,5c2,5
< local_address=10.0.1.2
< peers=10.0.1.1
< my_as=65000
< enable_rtc=False
---
> local_address=192.168.100.177
> peers=192.168.0.101
> my_as=64512
> enable_rtc=True

log 出力設定ファイル (/etc/bagpipe-bgp/log.conf)

  • /etc/bagpipe-bgp/log.conf
  • [logger_engine] だけ出力レベルを WARNING から DEBUG に変更(様子を観察するため)
  • デフォルトでは /var/log/bagpipe-bgp/bagpipe-bgp.log に出力される
$ cat /etc/bagpipe-bgp/log.conf

(略)

[logger_engine]
level=DEBUG
propagate=0
qualname=bagpipe.bgp.engine
handlers=rotatingFile
parent=bgp

(略)

$ diff /etc/bagpipe-bgp/log.conf /etc/bagpipe-bgp/log.conf.template
25c25
< level=DEBUG
---
> level=WARNING

bagpipe-bgp 起動~状態確認

ここからの例では起動の前に、適当な iBGP neighbor を用意しておきます。

起動

  • service で普通に扱うだけ
  • 要 root 権限
$ sudo service bagpipe-bgp start
Starting BGP component...

$ sudo service bagpipe-bgp restart
Restarting BGP component... stopping.........starting

$ sudo service bagpipe-bgp status
BGP component is running.

ログ確認

  • デフォルトのログ設定ではさほど出力されないが、前述の通り [logger_engine] の level を DEBUG に変えたので、やたら出ている
$ more /var/log/bagpipe-bgp/bagpipe-bgp.log
2015-11-08 12:18:41,772 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Re-initiating
2015-11-08 12:18:41,773 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Worker BGP-10.0.1.1 BGP FSM transitioned from 'OpenSent' to 'Idle' state
2015-11-08 12:18:41,773 BGP-10.0.1.1                   bagpipe.bgp.engine.bgp_manager DEBUG    push cleanup event for worker BGP-10.0.1.1 to RouteTableManager
2015-11-08 12:18:41,773 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager received event WorkerCleanupEvent:BGP-10.0.1.1
2015-11-08 12:18:41,774 RouteTableManager              bagpipe.bgp.engine.route_table_manager INFO     Cleanup for worker BGP-10.0.1.1
2015-11-08 12:18:41,774 RouteTableManager              bagpipe.bgp.engine.route_table_manager INFO     (we had no trace of Worker BGP-10.0.1.1 in _source2entries)
2015-11-08 12:18:41,774 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager queue size: 0
2015-11-08 12:18:41,774 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager waiting on queue
2015-11-08 12:18:51,788 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Worker BGP-10.0.1.1 BGP FSM transitioned from 'Idle' to 'Connect' state
2015-11-08 12:18:51,788 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Initiate ExaBGP connection to 10.0.1.1 from 10.0.1.2
2015-11-08 12:18:51,790 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Instantiate ExaBGP Protocol
2015-11-08 12:18:51,791 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Send open: [OPEN version=4 asn=65000 hold_time=180 router_id=10.0.1.2 capabilities=[Multiprotocol IPv4 mpls-vpn L2VPN evpn, 4Bytes AS 65000]]
2015-11-08 12:18:51,792 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Worker BGP-10.0.1.1 BGP FSM transitioned from 'Connect' to 'OpenSent' state
2015-11-08 12:18:51,792 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Wait for open...
2015-11-08 12:18:51,793 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Read message: OPEN version=4 asn=65000 hold_time=90 router_id=192.168.101.170 capabilities=[Multiprotocol L2VPN evpn, Route Refresh, 4Bytes AS 65000]
2015-11-08 12:18:51,793 BGP-10.0.1.1                   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     changing thread name from BGP-10.0.1.1 to BGP-x192.168.101.170, based on the router-id advertized in Open (different from peerAddress == 10.0.1.1)
2015-11-08 12:18:51,793 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 WARNING  Peer does not advertise (IPv4,mpls-vpn) capability
2015-11-08 12:18:51,794 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Family (L2VPN,evpn) successfully negotiated with peer 10.0.1.1
2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 WARNING  Peer does not advertise (IPv4,rtc) capability
2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Worker BGP-10.0.1.1/192.168.101.170 BGP FSM transitioned from 'OpenSent' to 'OpenConfirm' state
2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Init sendKA timer (30s)
2015-11-08 12:18:51,796 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Init Keepalive reception timer (90s)
2015-11-08 12:18:51,797 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Sending 19 bytes on socket to peer 10.0.1.1
2015-11-08 12:18:51,797 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Start receive loop
2015-11-08 12:18:51,798 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO     Worker BGP-10.0.1.1/192.168.101.170 BGP FSM transitioned from 'OpenConfirm' to 'Established' state
2015-11-08 12:18:51,798 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.worker      INFO     Subscribe: Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170
2015-11-08 12:18:51,799 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.bgp_manager DEBUG    bagpipe.bgp.engine.bgp_manager.Manager method _routeEventSubscribe called with arguments (Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170,) {}
2015-11-08 12:18:51,799 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager received event Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170
2015-11-08 12:18:51,799 RouteTableManager              bagpipe.bgp.engine.route_table_manager INFO     workerSubscribes: Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170
2015-11-08 12:18:51,800 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager queue size: 0
2015-11-08 12:18:51,800 RouteTableManager              bagpipe.bgp.engine.route_table_manager DEBUG    RouteTableManager waiting on queue
2015-11-08 12:18:51,800 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Keepalive received
2015-11-08 12:18:51,801 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Init Keepalive reception timer (90s)
2015-11-08 12:18:51,800 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Received message: KEEPALIVE
2015-11-08 12:19:21,797 BGP-10.0.1.1/192.168.101.170:sendKATimer bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Trigger send KeepAlive
2015-11-08 12:19:21,798 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Sending 19 bytes on socket to peer 10.0.1.1
2015-11-08 12:19:21,798 BGP-10.0.1.1/192.168.101.170:sendKATimer bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Init sendKA timer (30s)
2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Received message: KEEPALIVE
2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Keepalive received
2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170   bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG    Init Keepalive reception timer (90s)

状態確認(bagpipe-looking-glass)

$ bagpipe-looking-glass bgp peers 10.0.1.1
protocol:
  state: Established
  hold_time: 90
  last_transition_time: 2015-11-08 12:18:51
  previous_state: (OpenConfirm)
name: BGP-10.0.1.1/192.168.101.170
rtc:
  active: False
  enabled: False
as_info:
  peer: 65000
  local: 65000
internals:
  event queue length: 0
  subscriptions:
    * match:L2VPN/evpn,*
peeringAddresses:
  peerAddress: 10.0.1.1
  localAddress: 10.0.1.2
routes:  (...)
active_families:
  * (L2VPN, evpn)
logs:  (...)
  • bagpipe は Openstack Neutron components あたりとの連携して使うのが一般的のようで RESTAPI 制御も可能
  • 適当に別のノードから突いた一例
$ curl -s http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1 | python -m json.tool
{
    "active_families": [
        "(L2VPN, evpn)"
    ],
    "as_info": {
        "local": 65000,
        "peer": 65000
    },
    "internals": {
        "event queue length": 0,
        "subscriptions": [
            "match:L2VPN/evpn,*"
        ]
    },
    "logs": {
        "href": "http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1/logs"
    },
    "name": "BGP-10.0.1.1/192.168.101.170",
    "peeringAddresses": {
        "localAddress": "10.0.1.2",
        "peerAddress": "10.0.1.1"
    },
    "protocol": {
        "hold_time": 90,
        "last_transition_time": "2015-11-08 12:18:51",
        "previous_state": "(OpenConfirm)",
        "state": "Established"
    },
    "routes": {
        "href": "http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1/routes"
    },
    "rtc": {
        "active": false,
        "enabled": false
    }
}

おわり

  • インストールしただけなので、特に…

GoBGP インストール~簡易動作確認 (original : 2015/11/08)

この記事は某所で 2015/11/08 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。

概要

本項でやること

  • gobgp をインストール~起動~適当なノードとiBGP Peeringするところまでです
  • gobgp 公式 Getting started に従います

環境情報

$ uname -a
Linux as65000-s1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

$ uname -r
3.19.0-25-generic

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

構築手順

Go インストール

$ wget --no-check-certificate https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
$ ls -al
total 76060
drwxrwxr-x 2 kotetsu kotetsu     4096 Nov  7 20:53 .
drwxr-xr-x 5 kotetsu kotetsu     4096 Nov  7 20:49 ..
-rw-rw-r-- 1 kotetsu kotetsu 77875767 Sep  9 13:20 go1.5.1.linux-amd64.tar.gz

$ sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz
$ ls -al /usr/local/go/
total 136
drwxr-xr-x 11 root root  4096 Sep  9 10:37 .
drwxr-xr-x 11 root root  4096 Nov  7 20:57 ..
drwxr-xr-x  2 root root  4096 Sep  9 10:24 api
-rw-r--r--  1 root root 21146 Sep  9 10:24 AUTHORS
drwxr-xr-x  2 root root  4096 Sep  9 10:37 bin
drwxr-xr-x  4 root root  4096 Sep  9 10:37 blog
-rw-r--r--  1 root root  1107 Sep  9 10:24 CONTRIBUTING.md
-rw-r--r--  1 root root 28953 Sep  9 10:24 CONTRIBUTORS
drwxr-xr-x  8 root root  4096 Sep  9 10:24 doc
-rw-r--r--  1 root root  1150 Sep  9 10:24 favicon.ico
drwxr-xr-x  3 root root  4096 Sep  9 10:24 lib
-rw-r--r--  1 root root  1479 Sep  9 10:24 LICENSE
drwxr-xr-x 13 root root  4096 Sep  9 10:37 misc
-rw-r--r--  1 root root  1303 Sep  9 10:24 PATENTS
drwxr-xr-x  7 root root  4096 Sep  9 10:37 pkg
-rw-r--r--  1 root root  1519 Sep  9 10:24 README.md
-rw-r--r--  1 root root    26 Sep  9 10:24 robots.txt
drwxr-xr-x 43 root root  4096 Sep  9 10:24 src
drwxr-xr-x 16 root root 12288 Sep  9 10:36 test
-rw-r--r--  1 root root     7 Sep  9 10:24 VERSION

$ mkdir $HOME/go
$ echo 'export GOPATH=$HOME/go'  >> $HOME/.profile
$ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> $HOME/.profile
$ source $HOME/.profile
$ env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/home/kotetsu/go/bin
GOPATH=/home/kotetsu/go

$ go version
go version go1.5.1 linux/amd64

gobgp インストール

  • インストールに使う go get コマンドに必要なパッケージを適宜インストール GoGetTools
$ sudo apt-get update
$ sudo apt-get install git mercurial
$ go get github.com/osrg/gobgp/gobgpd
warning: code.google.com is shutting down; import path code.google.com/p/go-uuid/uuid will stop working

$ go get github.com/osrg/gobgp/gobgp

$ ls -al ~/go/bin/
total 29056
drwxrwxr-x 2 kotetsu kotetsu     4096 Nov  7 21:43 .
drwxrwxr-x 5 kotetsu kotetsu     4096 Nov  7 21:36 ..
-rwxr-xr-x 1 kotetsu kotetsu 13801080 Nov  7 21:43 gobgp
-rwxr-xr-x 1 kotetsu kotetsu 15939792 Nov  7 21:36 gobgpd

gobgpd.conf 作成

  • 適当なディレクトリに config ファイルを作成して、適当な設定を書き込む
  • 以下例では iBGP しか設定していないが、eBGP も動く
$ mkdir ~/gobgp
$ touch ~/gobgp/gobgpd.conf

$ cat ~/gobgp/gobgpd.conf
[Global]
  [Global.GlobalConfig]
    As = 65000
    RouterId = "192.168.101.170"

[Neighbors]
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.NeighborConfig]
      NeighborAddress = "10.0.1.2"
      PeerAs = 65000
    [Neighbors.NeighborList.AfiSafis]
      [[Neighbors.NeighborList.AfiSafis.AfiSafiList]]
        AfiSafiName = "l2vpn-evpn"

  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.NeighborConfig]
      NeighborAddress = "10.0.2.2"
      PeerAs = 65000
    [Neighbors.NeighborList.AfiSafis]
      [[Neighbors.NeighborList.AfiSafis.AfiSafiList]]
        AfiSafiName = "l2vpn-evpn"

gobgpd 起動

  • root 権限で実行しないと、IP アドレス bind に失敗する
  • デフォルトではフォアグラウンドで動く
$ gobgpd -f ~/gobgp/gobgpd.conf
{"level":"info","msg":"gobgpd started","time":"2015-11-07T22:11:54+09:00"}
{"level":"info","msg":"finished reading the config file","time":"2015-11-07T22:11:54+09:00"}
{"level":"info","msg":"listen tcp4 :179: bind: permission denied","time":"2015-11-07T22:11:54+09:00"}
{"level":"info","msg":"listen tcp6 :179: bind: permission denied","time":"2015-11-07T22:11:54+09:00"}
{"level":"fatal","msg":"can't listen either v4 and v6","time":"2015-11-07T22:11:54+09:00"}

$ sudo cat /etc/sudoers | grep Defaults
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults        exempt_group="kotetsu"

$ sudo -E gobgpd -f ~/gobgp/gobgpd.conf &
[1] 8242
kotetsu@as65000-1:~$ {"level":"info","msg":"gobgpd started","time":"2015-11-07T22:28:37+09:00"}
{"level":"info","msg":"finished reading the config file","time":"2015-11-07T22:28:37+09:00"}
{"level":"info","msg":"Peer 10.0.1.2 is added","time":"2015-11-07T22:28:37+09:00"}
{"level":"info","msg":"Peer 10.0.2.2 is added","time":"2015-11-07T22:28:37+09:00"}

$ ps au | grep [g]o
root      8242  0.0  0.8  64956  4052 pts/1    S    Nov07   0:00 sudo -E gobgpd -f /home/kotetsu/gobgp/gobgpd.conf
root      8243  0.0  2.1 139396 11004 pts/1    Sl   Nov07   0:01 gobgpd -f /home/kotetsu/gobgp/gobgpd.conf

$ gobgp neighbor --help
Usage:
  gobgp neighbor [flags]

Flags:
  -a, --address-family="": address family
  -t, --transport="": specifying a transport protocol

Global Flags:
      --bash-cmpl-file="gobgp_completion.bash": bash cmpl filename
  -d, --debug[=false]: use debug
  -c, --gen-cmpl[=false]: generate completion file
  -u, --host="127.0.0.1": host
  -j, --json[=false]: use json format to output format
  -p, --port=8080: port
  -q, --quiet[=false]: use quiet

動作確認

適当な neighbor を用意して、動作確認(勿論 gobgp 同士でも可能)

  • neighbor の Peer 確立、切断時などにはデフォルトでは標準出力に以下のような出力
{"Key":"10.0.1.2","Reason":"Peer closed the session","State":6,"Topic":"Peer","level":"info","msg":"Peer Down","time":"2015-11-08T12:18:41+09:00"}
{"Key":"10.0.1.2","Topic":"Peer","level":"warning","msg":"Closed an accepted connection","time":"2015-11-08T12:18:41+09:00"}
{"Key":"10.0.1.2","State":5,"Topic":"Peer","level":"info","msg":"Peer Up","time":"2015-11-08T12:18:51+09:00"}
$ gobgp neighbor
Peer                AS  Up/Down State       |#Advertised Received Accepted
10.0.1.2         65000 02:07:33 Establ      |          0        0        0
10.0.2.2         65000    never Active      |          0        0        0

$ gobgp neighbor 10.0.1.2
BGP neighbor is 10.0.1.2, remote AS 65000
  BGP version 4, remote router ID 10.0.1.2
  BGP state = BGP_FSM_ESTABLISHED, up for 02:07:40
  BGP OutQ = 0, Flops = 0
  Hold time is 0, keepalive interval is 30 seconds
  Configured hold time is 90, keepalive interval is 30 seconds
  Neighbor capabilities:
    BGP_CAP_MULTIPROTOCOL:
        RF_EVPN:        advertised and received
        RF_IPv4_VPN:    received
        RF_RTC_UC:      received
    BGP_CAP_ROUTE_REFRESH:      advertised
    BGP_CAP_FOUR_OCTET_AS_NUMBER:       advertised and received
  Message statistics:
                         Sent       Rcvd
    Opens:                 20         20
    Notifications:          0          0
    Updates:                0          0
    Keepalives:           392        392
    Route Refesh:           0          0
    Discarded:              0          0
    Total:                412        412
  Route statistics:
    Advertised:             0
    Received:               0
    Accepted:               0

おまけ CLI's tab 補完(bash 用) 導入

  • 'gobgp' 各種コマンドを Tab 補完できるようになるので、入れておくと便利
$ cd ~/gobgp
$ wget https://raw.githubusercontent.com/osrg/gobgp/master/tools/completion/gobgp-completion.bash

$ ls -al
total 56
drwxrwxr-x 2 kotetsu kotetsu  4096 Nov  7 23:32 .
drwxr-xr-x 6 kotetsu kotetsu  4096 Nov  7 22:07 ..
-rw-rw-r-- 1 kotetsu kotetsu 41832 Nov  7 23:32 gobgp-completion.bash
-rw-rw-r-- 1 kotetsu kotetsu   354 Nov  7 22:10 gobgpd.conf

$ source ~/gobgp/gobgp-completion.bash

おわり

  • インストールしただけなので別に…

Arista EOS の python コード読み始め (original : 2015/05/06)

この記事は某所で 2015/05/06 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。

概要

本項でやること

EOS の読んでおきたいコードをメインに、ディレクトリ構造を追いました。本項単体では何も得られない僕向けの内容です。マニュアルで得られない情報をコードやコメントから読み取るのって、楽しいんですよね(死んだ魚の目)。

以下のようなことをやるための前戯の意味もあります。

sysdb に関しては、直接突くための SDK が公式で公開されているのですが、EOS 側にインストール必要な rpm が Guest アカウントでは Download 権限がなかったです(2015/05/03 時点)。
そこで EOS の python コードを読めば(その中で sysdb を呼び出している筈なので)、SDK がなくても突けるのではないかと考えました(未施行)。

Arista EOS?

Arista EOS 自体については、以下の本をオススメしときますね。

Arista Warrior: A Real-World Guide to Understanding Arista Switches and EOS

Arista Warrior: A Real-World Guide to Understanding Arista Switches and EOS

環境

2015/04 にリリースされたばかりの 4.15.0F が、vEOS にも早速来ていました。ウヒョー!

  • Aboot-veos:Aboot-veos-2.1.0
  • OS:vEOS-4.15.0F
  • CPU:1core
  • Memory:1024MB

サマリ

path 内容
/mnt/flash                      OS ファイルや startup-config ファイルが配置されているディレクト
/mnt/flash/.extensions               extension として読み込ませる rpm を配置するディレクト
/usr/bin/[A-Z]* Arista 固有 agent 群
/usr/lib/python2.7/site-packages/*.py EOS コア系処理
/usr/lib/python2.7/site-packages/SysdbPlugin/*.py Sysdb 構成
/usr/lib/python2.7/site-packages/CliPlugin/*.py EOS CLI コマンドの定義をしている python スクリプト
/usr/lib/python2.7/site-packages/MlagPlugin/*.py MLAG 関係の sysdb 読み書きをしている python スクリプト

なので /usr/lib/python2.7/site-packages/ 配下を固めて手元に持ってきて、適当なエディタにぶち込んで読んでます。

詳細

EOS CLI から bash に降りる

こんな感じで。

veos-dev[20150505_22:12:16]>en
veos-dev[20150505_22:12:25]#bash

Arista Networks EOS shell

[kotetsu@veos-dev ~]$

root 化が必要な時には。

[kotetsu@veos-dev ~]$ sudo -s
bash-4.1#

OS コマンドで構成情報を探る

[kotetsu@veos-dev ~]$ uname -a
Linux veos-dev 3.4.43.Ar-2374134.4150F #1 SMP PREEMPT Thu Apr 9 14:38:10 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[kotetsu@veos-dev ~]$

いつも思うのですが memory 1GB だといっぱいいっぱいなので、2GBくらい割当てた方が良いかもです。

[kotetsu@veos-dev ~]$ free
             total       used       free     shared    buffers     cached
Mem:        996096     957036      39060          0       9724     370736
-/+ buffers/cache:     576576     419520
Swap:            0          0          0
[kotetsu@veos-dev ~]$

Arista 独自のプロセスは大文字で始まるものが多いみたいです。

[kotetsu@veos-dev ~]$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 22:09 ?        00:00:01 /sbin/init
root         2     0  0 22:09 ?        00:00:00 [kthreadd]
root         3     2  0 22:09 ?        00:00:00 [ksoftirqd/0]
root         4     2  0 22:09 ?        00:00:00 [kworker/0:0]
root         6     2  0 22:09 ?        00:00:00 [migration/0]
root         8     2  0 22:09 ?        00:00:00 [khelper]
root         9     2  0 22:09 ?        00:00:00 [netns]
root       166     2  0 22:09 ?        00:00:00 [sync_supers]
root       168     2  0 22:09 ?        00:00:00 [bdi-default]
root       170     2  0 22:09 ?        00:00:00 [kblockd]
root       177     2  0 22:09 ?        00:00:00 [ata_sff]
root       187     2  0 22:09 ?        00:00:00 [khubd]
root       210     2  0 22:09 ?        00:00:00 [dst_gc_task]
root       295     2  0 22:09 ?        00:00:00 [arp_cache-prd]
root       296     2  0 22:09 ?        00:00:00 [icmp_unreachabl]
root       297     2  0 22:09 ?        00:00:00 [rpciod]
root       300     2  0 22:09 ?        00:00:00 [ecc_log_wq]
root       309     2  0 22:09 ?        00:00:00 [khungtaskd]
root       310     2  0 22:09 ?        00:00:00 [khungtaskd2]
root       314     2  0 22:09 ?        00:00:02 [kswapd0]
root       315     2  0 22:09 ?        00:00:00 [fsnotify_mark]
root       316     2  0 22:09 ?        00:00:00 [nfsiod]
root       317     2  0 22:09 ?        00:00:00 [crypto]
root       323     2  0 22:09 ?        00:00:00 [pcielwd]
root       362     2  0 22:09 ?        00:00:00 [scsi_eh_0]
root       365     2  0 22:09 ?        00:00:00 [scsi_eh_1]
root       368     2  0 22:09 ?        00:00:00 [kworker/u:2]
root       369     2  0 22:09 ?        00:00:00 [kworker/u:3]
root       433     2  0 22:09 ?        00:00:00 [edac-poller]
root       465     2  0 22:09 ?        00:00:00 [ndisc_cache-prd]
root       469     2  0 22:09 ?        00:00:00 [deferwq]
root       605     2  2 22:09 ?        00:00:08 [loop0]
root       617     2  0 22:09 ?        00:00:00 [flush-8:0]
root       886     1  0 22:09 ?        00:00:00 /sbin/udevd -d
root      1006     2  0 22:09 ?        00:00:01 [kworker/0:2]
root      1216     1  0 22:09 ?        00:00:00 python /usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/local.new . &&
root      1218  1216  0 22:09 pts/0    00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move .
root      1228     1  0 22:09 ?        00:00:00 python /usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/sys.new . && mv
root      1229  1228  0 22:09 pts/1    00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move .
root      1241     1  0 22:09 ?        00:00:00 python /usr/bin/inotifyrun -c shred --exact --iterations=1 /mnt/flash/persist/secure; pa
root      1243  1241  0 22:09 pts/2    00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move .
root      1249     2  0 22:09 ?        00:00:00 [watchdog/0]
root      1343     1  0 22:09 ?        00:00:00 watchdog
root      1344  1343  0 22:09 ?        00:00:00 wdog-cld
root      1400     1  0 22:09 ?        00:00:00 /usr/bin/EosOomAdjust
root      1404     1  0 22:09 ?        00:00:00 /usr/sbin/mcelog --daemon --no-syslog --logfile /var/log/mcelog
root      1415     2  0 22:09 ?        00:00:00 [kbfd_v4v6_rx]
root      1416     2  0 22:09 ?        00:00:00 [kbfd_v4v6_echo]
root      1417     2  0 22:09 ?        00:00:00 [kbfd_tx]
root      1418     2  0 22:09 ?        00:00:00 [kbfd_rx_expire]
root      1419     2  0 22:09 ?        00:00:00 [kbfd_tx_reset]
root      1420     2  0 22:09 ?        00:00:00 [kbfd_echo_tx]
root      1421     2  0 22:09 ?        00:00:00 [kbfd_echo_rx_ex]
root      1422     2  0 22:09 ?        00:00:00 [kbfd_echo_tx_re]
root      1423     2  0 22:09 ?        00:00:00 [kbfd_echo_exp_r]
root      1462     1  0 22:09 ?        00:00:00 crond
root      1516     1  0 22:10 ?        00:00:00 netnsd-watcher  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1518  1516  0 22:10 ?        00:00:00 netnsd-server   -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1526     1  0 22:10 ?        00:00:00 ProcMgr-mast    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1527  1526  0 22:10 ?        00:00:01 ProcMgr-work    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1528  1527  2 22:10 ?        00:00:08 Sysdb           -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1530  1527  0 22:10 ?        00:00:00 Fru             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1531  1527  0 22:10 ?        00:00:01 Launcher        -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1630  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Lldp
root      1631  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/LacpTxAgent
root      1632  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/PortSec
root      1633  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Bfd
root      1634  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Ipv6RouterAdvt
root      1636  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1637  1636  0 22:10 ?        00:00:00 Lldp            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1639  1527  0 22:10 ?        00:00:01 SuperServer     -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1640  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/PimReg
root      1641  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1643  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1644  1641  0 22:10 ?        00:00:00 PortSec         -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1645  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Ira
root      1646  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/LedPolicy
root      1647  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1648  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1649  1643  0 22:10 ?        00:00:00 LacpTxAgent     -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1651  1647  0 22:10 ?        00:00:00 Bfd             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1653  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1655  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/KernelMfib
root      1656  1527  0 22:10 ?        00:00:00 EventMon        -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1657  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/AgentMonitor
root      1659  1648  0 22:10 ?        00:00:00 Ipv6RouterAd    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1660  1653  0 22:10 ?        00:00:00 PimReg          -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1663  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1664  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1665  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Msdp
root      1667  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Fhrp
root      1668  1527  0 22:10 ?        00:00:00 Aaa             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1669  1663  0 22:10 ?        00:00:00 Ira             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1670  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1671  1664  0 22:10 ?        00:00:00 LedPolicy       -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1672  1670  0 22:10 ?        00:00:00 KernelMfib      -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1674  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/StpTopology
root      1676  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1678  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/PowerManager
root      1681  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1683  1676  0 22:10 ?        00:00:02 AgentMonitor    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1685  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1687  1681  0 22:10 ?        00:00:00 Msdp            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1688  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1689  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Mpls
root      1691  1685  0 22:10 ?        00:00:00 StpTopology     -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1692  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1693  1688  0 22:10 ?        00:00:00 Fhrp            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1694  1692  0 22:10 ?        00:00:00 PowerManager    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1695  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Dot1x
root      1696  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Stp
root      1698  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/IgmpHostProxy
root      1699  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Acl
root      1701  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1702  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1703  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1704  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/PimBsr
root      1705  1702  0 22:10 ?        00:00:00 Mpls            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1706  1701  0 22:10 ?        00:00:00 Dot1x           -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1707  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Thermostat
root      1708  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Arp
root      1709  1703  0 22:10 ?        00:00:00 Stp             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1710  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Qos
root      1711  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Pim
root      1712  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/LoopProtect
root      1715  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Mirroring
root      1716  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/NetworkTopology
root      1717  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Ebra
root      1718  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/KernelFib
root      1720  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/TopoAgent
root      1721  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1722  1721  0 22:10 ?        00:00:00 IgmpHostProx    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1723  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1724  1527  0 22:10 ?        00:00:00 IgmpSnooping    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1725  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1726  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1727  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1728  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1729  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1730  1725  0 22:10 ?        00:00:00 Thermostat      -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1731  1726  0 22:10 ?        00:00:00 PimBsr          -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1732  1727  0 22:10 ?        00:00:00 Pim             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1733  1723  0 22:10 ?        00:00:00 Acl             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1734  1728  0 22:10 ?        00:00:00 Arp             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1735  1527  0 22:10 ?        00:00:00 netns --dlopen procmgr /usr/bin/Igmp
root      1736  1729  0 22:10 ?        00:00:00 LoopProtect     -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1737  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1738  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1739  1738  0 22:10 ?        00:00:00 NetworkTopol    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1740  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1741  1740  0 22:10 ?        00:00:00 Qos             -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1743  1737  0 22:10 ?        00:00:00 Mirroring       -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1744  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1745  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1747  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1748  1744  0 22:10 ?        00:00:00 Ebra            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1749  1745  0 22:10 ?        00:00:00 KernelFib       -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1751  1518  0 22:10 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1752  1751  0 22:10 ?        00:00:00 Igmp            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1753  1747  0 22:10 ?        00:00:00 TopoAgent       -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1758  1527  0 22:10 ?        00:00:00 PhyEthtool      -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      1963     1  0 22:10 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      2209     1  0 22:10 ?        00:00:00 /usr/sbin/sshd
root      2275     1  0 22:10 ?        00:00:00 /usr/bin/conlogd
root      2277  2275  0 22:10 ?        00:00:00 sh -c /usr/bin/tail -n 0 --retry --follow=name --pid=2275 /var/log/eos-console | sed 's/
root      2278  2277  0 22:10 ?        00:00:00 /usr/bin/tail -n 0 --retry --follow=name --pid=2275 /var/log/eos-console
root      2279  2277  0 22:10 ?        00:00:00 sed s/\(.*\)/\1\r/
root      2296     1  0 22:10 tty1     00:00:00 /sbin/mingetty /dev/tty1
root      2298     1  0 22:10 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2302     1  0 22:10 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2304     1  0 22:10 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2307     1  0 22:10 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2309     1  0 22:10 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2365  1527  2 22:11 ?        00:00:05 /usr/sbin/ribd -N
root      2377  1527  1 22:11 ?        00:00:04 FastClid        -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2415   886  0 22:11 ?        00:00:00 /sbin/udevd -d
root      2416   886  0 22:11 ?        00:00:00 /sbin/udevd -d
root      2418  1527  0 22:11 ?        00:00:02 Etba            -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2425  1527  0 22:11 ?        00:00:01 Lag+LacpAgen    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2428  1527  0 22:11 ?        00:00:00 netns --dlopen procmgr /usr/bin/Pimsm
root      2430  1518  0 22:11 ?        00:00:00 netnsd-session  -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2431  2430  0 22:11 ?        00:00:00 Pimsm           -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2487  1527  2 22:11 ?        00:00:05 CliSessionMg    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
root      2520  2209  0 22:12 ?        00:00:00 sshd: kotetsu [priv]
kotetsu   2539  2520  0 22:12 ?        00:00:00 sshd: kotetsu@pts/3
kotetsu   2542  2539  0 22:12 pts/3    00:00:00 FastCli
root      2545  2377  0 22:12 pts/4    00:00:00 FastClid        -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
kotetsu   2549  2545  0 22:12 pts/4    00:00:01 Cli [interac    -d -i --dlopen -p -f  -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s
kotetsu   2565  2549  0 22:12 pts/4    00:00:00 /bin/bash -l
root      2859     2  0 22:14 ?        00:00:00 [kworker/0:1]
root      2980     1  0 22:15 ttyS0    00:00:00 /sbin/mingetty --noclear /dev/ttyS0
kotetsu   2986  2565  0 22:15 pts/4    00:00:00 ps -ef
[kotetsu@veos-dev ~]$

ディレクトリ探索

[kotetsu@veos-dev ~]$ ls -alh /mnt/flash
total 448M
drwxrwx--- 6 root eosadmin 4.0K May  5 22:09 .
drwxr-xr-x 3 root root      100 May  5 22:09 ..
-r-xr-x--- 1 root eosadmin 224M May  3 15:48 .boot-image.swi
drwxrwx--- 2 root eosadmin 4.0K May  3 15:48 .extensions
-rwxrwx--- 1 root eosadmin   24 Apr 20 18:40 boot-config
drwxrwx--- 2 root eosadmin 4.0K May  3 15:48 debug
drwxrwx--- 2 root eosadmin 4.0K May  5 22:10 persist
drwxrwx--- 3 root eosadmin 4.0K May  3 15:54 schedule
-rwxrwx--- 1 root eosadmin  466 May  4 23:36 startup-config
-rwxrwx--- 1 root eosadmin 224M Apr 20 18:40 vEOS-lab.swi
[kotetsu@veos-dev ~]$ which Cli
/usr/bin/Cli
[kotetsu@veos-dev ~]$
[kotetsu@veos-dev ~]$ ls -alh /usr/bin/[A-Z]*
-rwxr-xr-x 1 root root  148 Apr 16 01:53 /usr/bin/Aaa
-rwxr-xr-x 1 root root  528 Apr 16 01:53 /usr/bin/AaaFlushAccounting
-rwxr-xr-x 1 root root 2.5K Apr 16 01:53 /usr/bin/AaaSetRootPassword
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Acl -> /usr/lib/libAclLoader.so
lrwxrwxrwx 1 root root   33 Apr 21 01:39 /usr/bin/AgentMonitor -> /usr/lib/libAgentMonitorLoader.so
-rwxr-xr-x 1 root root 1.4K Apr 16 04:18 /usr/bin/AleFibCliDiffUtil
-rwxr-xr-x 1 root root 3.9K Apr 10 17:09 /usr/bin/ArSchedule
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Arp -> /usr/lib/libArpLoader.so
lrwxrwxrwx 1 root root   34 Apr 21 01:39 /usr/bin/ArpInspection -> /usr/lib/libArpInspectionLoader.so
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Bfd -> /usr/lib/libBfdLoader.so
-rwxr-xr-x 1 root root  156 Apr 10 17:31 /usr/bin/BootMgr
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Cdp -> /usr/lib/libCdpLoader.so
-rwxr-xr-x 1 root root 3.1K Apr 10 17:18 /usr/bin/Cli
-rwxr-xr-x 1 root root  400 Apr 10 17:18 /usr/bin/CliSessionMgr
-rwxr-xr-x 1 root root 2.9K Apr 10 17:09 /usr/bin/CombineHeapDumps
-rwxr-xr-x 1 root root 1.8K Apr 10 17:18 /usr/bin/ConfigureReplace
lrwxrwxrwx 1 root root   42 Apr 21 01:39 /usr/bin/ControllerDebugClient -> /usr/lib/libControllerDebugClientLoader.so
lrwxrwxrwx 1 root root   42 Apr 21 01:39 /usr/bin/ControllerDebugServer -> /usr/lib/libControllerDebugServerLoader.so
-rwxr-xr-x 1 root root  15K Apr 10 18:43 /usr/bin/ControllerOob
-rwxr-xr-x 1 root root  38K Apr 10 18:39 /usr/bin/ControllerRegistrationAgent
-rwxr-xr-x 1 root root 7.6K Apr 10 18:43 /usr/bin/Controllerdb
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/CpuComplex -> /usr/lib/libCpuComplexLoader.so
-rwxr-xr-x 1 root root 2.2K Apr 10 17:18 /usr/bin/CreateCleanConfig
-rwxr-xr-x 1 root root  288 Apr 16 02:25 /usr/bin/Dcbx
-rwxr-xr-x 1 root root 9.2K Apr 16 02:11 /usr/bin/DebugSwitchover
lrwxrwxrwx 1 root root   30 Apr 21 01:39 /usr/bin/DhcpRelay -> /usr/lib/libDhcpRelayLoader.so
-rwxr-xr-x 1 root root 3.1K Apr 10 17:25 /usr/bin/DiskUsageWatch
lrwxrwxrwx 1 root root   26 Apr 21 01:39 /usr/bin/Dot1x -> /usr/lib/libDot1xLoader.so
-rwxr-xr-x 1 root root  59K Apr 10 17:02 /usr/bin/DumpDb
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Ebra -> /usr/lib/libEbraLoader.so
-rwxr-xr-x 1 root root 1.1K Apr 16 02:11 /usr/bin/ElectionMgr
-rwxr-xr-x 1 root root 7.5K Apr 18 19:04 /usr/bin/EosCoredumpControl
-rwxr-xr-x 1 root root 2.4K Apr 10 17:09 /usr/bin/EosEntityTreeMonitor
-rwxr-xr-x 1 root root 8.6K Apr 10 18:35 /usr/bin/EosInit
-rwxr-xr-x 1 root root 3.5K Apr 18 19:04 /usr/bin/EosInitReport
-rwxr-xr-x 1 root root  174 Apr 18 19:04 /usr/bin/EosMemUsage
-rwxr-xr-x 1 root root  17K Apr 18 19:04 /usr/bin/EosOomAdjust
-rwxr-xr-x 1 root root  15K Apr 18 19:04 /usr/bin/EosSsdDutArchiveFilesTest.py
-rwxr-xr-x 1 root root  170 Apr 10 17:44 /usr/bin/Etba
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/EventMgr -> /usr/lib/libEventMgrLoader.so
-rwxr-xr-x 1 root root  168 Apr 10 17:35 /usr/bin/EventMon
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/FanDetector -> /usr/lib/libFanDetectorLoader.so
-rwxr-xr-x 1 root root 3.8K Apr 10 17:18 /usr/bin/FastCli
-rwxr-xr-x 1 root root 2.3K Apr 10 17:18 /usr/bin/FastClid
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/FastServerFailover -> /usr/lib/libFsfAgentLoader.so
-rwxr-xr-x 1 root root 2.3K Apr 18 19:04 /usr/bin/FetchLogs
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Fhrp -> /usr/lib/libFhrpLoader.so
-rwxr-xr-x 1 root root  530 Apr 16 02:11 /usr/bin/FileReplicator
-rwxr-xr-x 1 root root 1.7K Apr 10 17:36 /usr/bin/Fru
-rwxr-xr-x 1 root root  303 Apr 10 19:12 /usr/bin/GpioLed
-rwxr-xr-x 1 root root  237 Apr 16 02:19 /usr/bin/HadoopTracer
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Hsc -> /usr/lib/libHscLoader.so
lrwxrwxrwx 1 root root   30 Apr 21 01:39 /usr/bin/Igmp -> /usr/lib/libIgmpAgentLoader.so
lrwxrwxrwx 1 root root   34 Apr 21 01:39 /usr/bin/IgmpHostProxy -> /usr/lib/libIgmpHostProxyLoader.so
-rwxr-xr-x 1 root root  335 Apr 10 18:07 /usr/bin/IgmpSnooping
-rwxr-xr-x 1 root root 2.0K Apr 10 17:36 /usr/bin/InstallExtension
-rwxr-xr-x 1 root root 3.3K Apr 10 17:09 /usr/bin/InterpretHeapDump
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/Ipv6RouterAdvt -> /usr/lib/libRouterAdvtLoader.so
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Ira -> /usr/lib/libIraLoader.so
lrwxrwxrwx 1 root root   30 Apr 21 01:39 /usr/bin/KernelFib -> /usr/lib/libKernelFibLoader.so
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/KernelMfib -> /usr/lib/libKernelMfibLoader.so
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/LacpTxAgent -> /usr/lib/libLacpTxAgentLoader.so
-rwxr-xr-x 1 root root 3.5K Apr 10 17:51 /usr/bin/LacpduSendRequest.py
-rwxr-xr-x 1 root root  731 Apr 10 17:51 /usr/bin/Lag
-rwxr-xr-x 1 root root  158 Apr 10 17:31 /usr/bin/Launcher
lrwxrwxrwx 1 root root   30 Apr 21 01:39 /usr/bin/LedPolicy -> /usr/lib/libLedPolicyLoader.so
lrwxrwxrwx 1 root root   37 Apr 21 01:39 /usr/bin/LinuxBridge -> /usr/lib/libLinuxBridgeAgentLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Lldp -> /usr/lib/libLldpLoader.so
-rwxr-xr-x 1 root root 9.9K Apr 10 18:35 /usr/bin/LoadConfig
-rwxr-xr-x 1 root root  655 Apr 10 17:36 /usr/bin/LoadExtensionStatus
-rwxr-xr-x 1 root root  745 Apr 10 17:36 /usr/bin/LoadExtensions
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/LoopProtect -> /usr/lib/libLoopProtectLoader.so
lrwxrwxrwx 1 root root   37 Apr 21 01:39 /usr/bin/ManagementActive -> /usr/lib/libManagementActiveLoader.so
-rwxr-xr-x 1 root root  272 Apr 10 17:39 /usr/bin/Mdio
lrwxrwxrwx 1 root root   30 Apr 21 01:39 /usr/bin/Mirroring -> /usr/lib/libMirroringLoader.so
-rwxr-xr-x 1 root root  350 Apr 10 18:14 /usr/bin/Mlag
-rwxr-xr-x 1 root root 3.8K Apr 10 18:14 /usr/bin/MlagFileTransfer
-rwxr-xr-x 1 root root  374 Apr 10 18:14 /usr/bin/MlagTunnel
lrwxrwxrwx 1 root root   34 Apr 21 01:39 /usr/bin/ModularSystem -> /usr/lib/libModularSystemLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Mpls -> /usr/lib/libMplsLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Msdp -> /usr/lib/libMsdpLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Msrp -> /usr/lib/libMsrpLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/Mvrp -> /usr/lib/libMvrpLoader.so
lrwxrwxrwx 1 root root   41 Apr 21 01:39 /usr/bin/NetworkTopology -> /usr/lib/libNetworkTopologyAgentLoader.so
lrwxrwxrwx 1 root root   51 Apr 21 01:39 /usr/bin/NetworkTopologyAggregator -> /usr/lib/libNetworkTopologyAggregatorAgentLoader.so
-rwxr-xr-x 1 root root  190 Apr 16 04:22 /usr/bin/NorCalInit
lrwxrwxrwx 1 root root   35 Apr 21 01:39 /usr/bin/ObjectTracking -> /usr/lib/libObjectTrackingLoader.so
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/OpenFlow -> /usr/lib/libOpenFlowLoader.so
lrwxrwxrwx 1 root root   35 Apr 21 01:39 /usr/bin/OpenStack -> /usr/lib/libOpenStackAgentLoader.so
-rwxr-xr-x 1 root root  234 Apr 16 02:43 /usr/bin/OpenStackPoller
lrwxrwxrwx 1 root root   27 Apr 21 01:39 /usr/bin/PciBus -> /usr/lib/libPciBusLoader.so
lrwxrwxrwx 1 root root   27 Apr 21 01:39 /usr/bin/PcieNt -> /usr/lib/libPcieNtLoader.so
-rwxr-xr-x 1 root root  162 Apr 16 01:51 /usr/bin/PhyEthtool
-rwxr-xr-x 1 root root 3.8K Apr 16 01:51 /usr/bin/PhyEthtoolConfig
lrwxrwxrwx 1 root root   28 Apr 21 01:39 /usr/bin/Picasso -> /usr/lib/libPicassoLoader.so
-rwxr-xr-x 1 root root  18K Apr 10 17:49 /usr/bin/PicassoSummer
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/Pim -> /usr/lib/libPimAgentLoader.so
lrwxrwxrwx 1 root root   27 Apr 21 01:39 /usr/bin/PimBsr -> /usr/lib/libPimBsrLoader.so
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/PimReg -> /usr/lib/libPimRegAgentLoader.so
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/Pimsm -> /usr/lib/libPimsmAgentLoader.so
-rwxr-xr-x 1 root root 190K Apr 10 08:21 /usr/bin/PlxCm_dbg
-rwxr-xr-x 1 root root  87K Apr 10 08:21 /usr/bin/PlxEep_dbg
-rwxr-xr-x 1 root root  23K Apr 10 08:21 /usr/bin/PlxEeprom.py
-rwxr-xr-x 1 root root 7.1K Apr 10 08:21 /usr/bin/Plx_load
-rwxr-xr-x 1 root root 3.4K Apr 10 08:21 /usr/bin/Plx_unload
lrwxrwxrwx 1 root root   26 Apr 21 01:39 /usr/bin/PmbusPowerSupply -> /usr/lib/libPmbusLoader.so
lrwxrwxrwx 1 root root   28 Apr 21 01:39 /usr/bin/PortSec -> /usr/lib/libPortSecLoader.so
-rwxr-xr-x 1 root root 1.6K Apr 16 04:22 /usr/bin/Post
lrwxrwxrwx 1 root root   33 Apr 21 01:39 /usr/bin/PowerManager -> /usr/lib/libPowerManagerLoader.so
lrwxrwxrwx 1 root root   40 Apr 21 01:39 /usr/bin/PowerSupplyDetector -> /usr/lib/libPowerSupplyDetectorLoader.so
lrwxrwxrwx 1 root root   42 Apr 21 01:39 /usr/bin/PowerSupplyFixed -> /usr/lib/libPowerSupplyFixedAgentLoader.so
-rwxr-xr-x 1 root root   49 Apr 10 17:11 /usr/bin/ProcMgr
lrwxrwxrwx 1 root root   28 Apr 21 01:39 /usr/bin/Psmi144PowerSupply -> /usr/lib/libPsmi144Loader.so
lrwxrwxrwx 1 root root   27 Apr 21 01:39 /usr/bin/Psmi20PowerSupply -> /usr/lib/libPsmi20Loader.so
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/Ptp -> /usr/lib/libPtpAgentLoader.so
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/PtpTimeSync -> /usr/lib/libPtpTimeSyncLoader.so
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Qos -> /usr/lib/libQosLoader.so
lrwxrwxrwx 1 root root   40 Apr 21 01:39 /usr/bin/ReachabilityMonitor -> /usr/lib/libReachabilityMonitorLoader.so
-rwxr-xr-x 1 root root  788 Apr 10 18:26 /usr/bin/Rib
-rwxr-xr-x 1 root root 2.8K Apr 10 18:26 /usr/bin/RibdMemoryMonitor
-rwxr-xr-x 1 root root 1.6K Apr 10 18:26 /usr/bin/RibdShowTech
-rwxr-xr-x 1 root root 4.3K Apr 10 18:26 /usr/bin/RibdSupport
-rwxr-xr-x 1 root root 1.6K Apr 16 01:53 /usr/bin/RunCli
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/ScdAgent -> /usr/lib/libScdAgentLoader.so
-rwxr-xr-x 1 root root 1.1K Apr 10 17:18 /usr/bin/SessionCli
-rwxr-xr-x 1 root root 3.9K Apr 10 07:42 /usr/bin/SetupEosDisk
lrwxrwxrwx 1 root root   26 Apr 21 01:39 /usr/bin/Sflow -> /usr/lib/libSflowLoader.so
-rwxr-xr-x 1 root root  176 Apr 16 02:11 /usr/bin/ShredRecursive
-rwxr-xr-x 1 root root  277 Apr 10 17:39 /usr/bin/Smbus
-rwxr-xr-x 1 root root  228 Apr 16 02:01 /usr/bin/Snmp
lrwxrwxrwx 1 root root   24 Apr 21 01:39 /usr/bin/Sol -> /usr/lib/libSolLoader.so
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/StandbyCpld -> /usr/lib/libStandbyCpldLoader.so
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/Stp -> /usr/lib/libStpAgentLoader.so
lrwxrwxrwx 1 root root   37 Apr 21 01:39 /usr/bin/StpTopology -> /usr/lib/libStpTopologyAgentLoader.so
-rwxr-xr-x 1 root root  498 Apr 10 17:32 /usr/bin/SuperServer
-rwxr-xr-x 1 root root 1.1K Apr 10 17:15 /usr/bin/Sysdb
-rwxr-xr-x 1 root root 1.9K Apr 10 18:35 /usr/bin/SysdbInit
lrwxrwxrwx 1 root root   27 Apr 21 01:39 /usr/bin/SysdbMonitor -> /usr/lib/libSysdbMonitor.so
-rwxr-xr-x 1 root root  167 Apr 10 17:15 /usr/bin/SysdbProxy
-rwxr-xr-x 1 root root  12K Apr 10 17:25 /usr/bin/TapCat
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/Thermostat -> /usr/lib/libThermostatLoader.so
lrwxrwxrwx 1 root root   25 Apr 21 01:39 /usr/bin/TopoAgent -> /usr/lib/libTopoLoader.so
-rwxr-xr-x 1 root root 1.9K Apr 10 17:36 /usr/bin/UninstallExtension
-rwxr-xr-x 1 root root  188 Apr 16 04:22 /usr/bin/UpdateUcd
-rwxr-xr-x 1 root root  156 Apr 16 01:50 /usr/bin/Vm
lrwxrwxrwx 1 root root   29 Apr 21 01:39 /usr/bin/VmTracer -> /usr/lib/libVmTracerLoader.so
-rwxr-xr-x 1 root root 1.3K Apr 16 02:21 /usr/bin/VmTracerEventHandler
lrwxrwxrwx 1 root root   26 Apr 21 01:39 /usr/bin/Vxlan -> /usr/lib/libVxlanLoader.so
lrwxrwxrwx 1 root root   32 Apr 21 01:39 /usr/bin/VxlanController -> /usr/lib/libVxlanCntrlrLoader.so
lrwxrwxrwx 1 root root   31 Apr 21 01:39 /usr/bin/VxlanSwFwd -> /usr/lib/libVxlanSwFwdLoader.so
-rwxr-xr-x 1 root root  804 Apr 18 06:18 /usr/bin/Xmpp
-rwxr-xr-x 1 root root 2.8K Apr 18 06:18 /usr/bin/XmppCli
-rwxr-xr-x 1 root root  389 Apr 16 02:21 /usr/bin/ZeroTouch
[kotetsu@veos-dev ~]$
bash-4.1# ls -alh /usr/lib/python2.7/site-packages/*.py
-rw-r--r-- 1 root root  63K Apr 16 01:53 /usr/lib/python2.7/site-packages/Aaa.py
-rw-r--r-- 1 root root 7.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaApi.py
-rw-r--r-- 1 root root  24K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaCliLib.py
-rw-r--r-- 1 root root  876 Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaDefs.py
-rw-r--r-- 1 root root  26K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaPluginLib.py
-rw-r--r-- 1 root root  175 Apr 10 17:58 /usr/lib/python2.7/site-packages/Acl.py
-rw-r--r-- 1 root root  32K Apr 10 17:58 /usr/lib/python2.7/site-packages/AclCliLib.py
-rw-r--r-- 1 root root  18K Apr 10 17:58 /usr/lib/python2.7/site-packages/AclLib.py
-rw-r--r-- 1 root root  23K Apr 10 17:14 /usr/lib/python2.7/site-packages/Agent.py
-rw-r--r-- 1 root root 2.9K Apr 10 17:32 /usr/lib/python2.7/site-packages/AgentCliHelper.py
-rw-r--r-- 1 root root 6.0K Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentCommandRequest.py
-rw-r--r-- 1 root root 7.0K Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentPing.py
-rw-r--r-- 1 root root 2.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/AgentSocketHandler.py
-rw-r--r-- 1 root root  799 Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentTerminate.py
-rw-r--r-- 1 root root 3.6K Apr 16 04:18 /usr/lib/python2.7/site-packages/AleFibCliDiffUtilLib.py
-rw-r--r-- 1 root root 2.8K Apr 16 04:22 /usr/lib/python2.7/site-packages/AltaVoltageRailAdj.py
-rw-r--r-- 1 root root  16K Apr 10 17:29 /usr/lib/python2.7/site-packages/ArHal.py
-rw-r--r-- 1 root root  11K Apr 10 17:27 /usr/lib/python2.7/site-packages/Aresolve.py
-rw-r--r-- 1 root root  20K Apr 10 17:09 /usr/lib/python2.7/site-packages/Ark.py
-rw-r--r-- 1 root root 2.9K Apr 10 17:25 /usr/lib/python2.7/site-packages/ArnetModel.py
-rw-r--r-- 1 root root  170 Apr 16 01:43 /usr/lib/python2.7/site-packages/ArpAgent.py
-rw-r--r-- 1 root root  301 Apr 16 01:43 /usr/lib/python2.7/site-packages/ArpLib.py
-rw-r--r-- 1 root root  241 Apr 10 18:42 /usr/lib/python2.7/site-packages/Arsys.py
-rw-r--r-- 1 root root  289 Apr 10 18:42 /usr/lib/python2.7/site-packages/ArsysNames.py
-rw-r--r-- 1 root root 1.4K Apr 10 17:41 /usr/lib/python2.7/site-packages/Artist.py
-rw-r--r-- 1 root root 4.1K Apr 10 07:26 /usr/lib/python2.7/site-packages/Assert.py
-rw-r--r-- 1 root root  96K Apr 10 17:18 /usr/lib/python2.7/site-packages/BasicCli.py
-rw-r--r-- 1 root root  274 Apr 10 17:57 /usr/lib/python2.7/site-packages/BfdAgent.py
-rw-r--r-- 1 root root 2.1K Apr 10 17:57 /usr/lib/python2.7/site-packages/BfdLib.py
-rw-r--r-- 1 root root 3.3K Apr 16 02:38 /usr/lib/python2.7/site-packages/BgpLib.py
-rw-r--r-- 1 root root 7.8K Apr 16 02:38 /usr/lib/python2.7/site-packages/BgpLogMsgs.py
-rw-r--r-- 1 root root 4.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/BogusFdl.py
-rw-r--r-- 1 root root 2.7K Apr 10 17:31 /usr/lib/python2.7/site-packages/BootMgr.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:09 /usr/lib/python2.7/site-packages/Bunch.py
-rw-r--r-- 1 root root 2.8K Apr 10 17:57 /usr/lib/python2.7/site-packages/BusUtilCommon.py
-rw-r--r-- 1 root root  12K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiAaa.py
-rw-r--r-- 1 root root 5.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CapiCliCommon.py
-rw-r--r-- 1 root root 5.0K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiConstants.py
-rw-r--r-- 1 root root  11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiJsonCli.py
-rw-r--r-- 1 root root  11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiJsonRpcBase.py
-rw-r--r-- 1 root root  11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiRequestContext.py
-rw-r--r-- 1 root root 9.5K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiSsl.py
-rw-r--r-- 1 root root 7.4K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiUwsgiServer.py
-rw-r--r-- 1 root root 3.8K Apr 10 17:13 /usr/lib/python2.7/site-packages/Cell.py
-rw-r--r-- 1 root root  972 Apr 10 17:36 /usr/lib/python2.7/site-packages/CheckFdlsLib.py
-rw-r--r-- 1 root root  12K Apr 16 04:22 /usr/lib/python2.7/site-packages/Chl822XConfigTool.py
-rw-r--r-- 1 root root  48K Apr 10 17:18 /usr/lib/python2.7/site-packages/Cli.py
-rw-r--r-- 1 root root 4.6K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliAaa.py
-rw-r--r-- 1 root root  29K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliApi.py
-rw-r--r-- 1 root root 6.3K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliCommon.py
-rw-r--r-- 1 root root  960 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliExtensions.py
-rw-r--r-- 1 root root  667 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliInputWrapper.py
-rw-r--r-- 1 root root  49K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliModel.py
-rw-r--r-- 1 root root  22K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliParser.py
-rw-r--r-- 1 root root  11K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliParserCommandClass.py
-rw-r--r-- 1 root root  222 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliProg.py
-rw-r--r-- 1 root root 4.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliRangeExpansion.py
-rw-r--r-- 1 root root  66K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliRule.py
-rw-r--r-- 1 root root  40K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliSave.py
-rw-r--r-- 1 root root 7.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliSchedulerLib.py
-rw-r--r-- 1 root root  52K Apr 10 17:17 /usr/lib/python2.7/site-packages/CliSession.py
-rw-r--r-- 1 root root  374 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliSessionMgrName.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:17 /usr/lib/python2.7/site-packages/CliSessionOnCommit.py
-rw-r--r-- 1 root root 1.5K Apr 10 17:18 /usr/lib/python2.7/site-packages/CmdExtension.py
-rw-r--r-- 1 root root  17K Apr 10 17:17 /usr/lib/python2.7/site-packages/ConfigMount.py
-rw-r--r-- 1 root root 6.6K Apr 10 17:18 /usr/lib/python2.7/site-packages/ConfigSessionCommon.py
-rw-r--r-- 1 root root  173 Apr 10 18:56 /usr/lib/python2.7/site-packages/ControllerDebugClientAgent.py
-rw-r--r-- 1 root root  173 Apr 10 18:56 /usr/lib/python2.7/site-packages/ControllerDebugServerAgent.py
-rw-r--r-- 1 root root  16K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerHeartbeatLib.py
-rw-r--r-- 1 root root  18K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerMessageLib.py
-rw-r--r-- 1 root root 2.0K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerModel.py
-rw-r--r-- 1 root root  294 Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerOobAgent.py
-rw-r--r-- 1 root root  199 Apr 10 18:39 /usr/lib/python2.7/site-packages/ControllerRegistration.py
-rw-r--r-- 1 root root 4.3K Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerRegistry.py
-rw-r--r-- 1 root root 2.1K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerSslReactorLib.py
-rw-r--r-- 1 root root 7.5K Apr 10 18:03 /usr/lib/python2.7/site-packages/Controller_pb2.py
-rw-r--r-- 1 root root  293 Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerdbAgent.py
-rw-r--r-- 1 root root 4.5K Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerdbEntityManager.py
-rw-r--r-- 1 root root  371 Apr 10 17:48 /usr/lib/python2.7/site-packages/CpuComplex.py
-rw-r--r-- 1 root root 4.8K Apr 10 17:18 /usr/lib/python2.7/site-packages/DateTimeRule.py
-rw-r--r-- 1 root root 1.7K Apr 16 02:25 /usr/lib/python2.7/site-packages/Dcbx.py
-rw-r--r-- 1 root root 1.8K Apr 16 02:25 /usr/lib/python2.7/site-packages/DcbxLib.py
-rw-r--r-- 1 root root 1.3K Apr 16 02:25 /usr/lib/python2.7/site-packages/DcbxTypes.py
-rw-r--r-- 1 root root 3.8K Apr 10 17:20 /usr/lib/python2.7/site-packages/Debug.py
-rw-r--r-- 1 root root 6.1K Apr 16 02:11 /usr/lib/python2.7/site-packages/DebugSwitchoverLib.py
-rw-r--r-- 1 root root 3.0K Apr 16 01:50 /usr/lib/python2.7/site-packages/DecapGroupModel.py
-rw-r--r-- 1 root root  864 Apr 10 17:09 /usr/lib/python2.7/site-packages/DesCrypt.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:25 /usr/lib/python2.7/site-packages/DeviceNameLib.py
-rw-r--r-- 1 root root  161 Apr 16 02:25 /usr/lib/python2.7/site-packages/DhcpRelayAgent.py
-rw-r--r-- 1 root root  745 Apr 16 02:25 /usr/lib/python2.7/site-packages/DhcpRelayVrfCliLib.py
-rw-r--r-- 1 root root  23K Apr 10 17:29 /usr/lib/python2.7/site-packages/DiagLib.py
-rw-r--r-- 1 root root 4.4K Apr 10 17:29 /usr/lib/python2.7/site-packages/Diagnostics.py
-rw-r--r-- 1 root root  20K Apr 10 17:29 /usr/lib/python2.7/site-packages/Diags.py
-rw-r--r-- 1 root root  797 Apr 10 08:08 /usr/lib/python2.7/site-packages/DiagsTools.py
-rw-r--r-- 1 root root  379 Apr 10 08:08 /usr/lib/python2.7/site-packages/DiagsToolsNames.py
-rw-r--r-- 1 root root 1.3K Apr 16 02:02 /usr/lib/python2.7/site-packages/Dot1xLib.py
-rw-r--r-- 1 root root 4.7K Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraLib.py
-rw-r--r-- 1 root root  452 Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraLogMsgs.py
-rw-r--r-- 1 root root  364 Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraName.py
-rw-r--r-- 1 root root  64K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridge.py
-rw-r--r-- 1 root root 3.1K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridgeLib.py
-rw-r--r-- 1 root root 1.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridgePort.py
-rw-r--r-- 1 root root 3.1K Apr 10 17:54 /usr/lib/python2.7/site-packages/EcbDiagLib.py
-rw-r--r-- 1 root root  38K Apr 16 02:11 /usr/lib/python2.7/site-packages/ElectionMgrAgent.py
-rw-r--r-- 1 root root 3.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/Email.py
-rw-r--r-- 1 root root 3.4K Apr 10 17:28 /usr/lib/python2.7/site-packages/EntityMib.py
-rw-r--r-- 1 root root 2.9K Apr 10 17:44 /usr/lib/python2.7/site-packages/EnvironmentUtils.py
-rw-r--r-- 1 root root 7.3K Apr 10 07:42 /usr/lib/python2.7/site-packages/EosDisk.py
-rw-r--r-- 1 root root 1.3K Apr 10 18:35 /usr/lib/python2.7/site-packages/EosInit.py
-rw-r--r-- 1 root root  185 Apr 10 18:35 /usr/lib/python2.7/site-packages/EosInitLib.py
-rw-r--r-- 1 root root 9.3K Apr 18 19:04 /usr/lib/python2.7/site-packages/EosLogUtil.py
-rw-r--r-- 1 root root 6.6K Apr 10 07:42 /usr/lib/python2.7/site-packages/EosVersion.py
-rw-r--r-- 1 root root 6.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/Errdisable.py
-rw-r--r-- 1 root root  615 Apr 10 17:39 /usr/lib/python2.7/site-packages/ErrdisableCliLib.py
-rw-r--r-- 1 root root  480 Apr 10 17:39 /usr/lib/python2.7/site-packages/EthIntf.py
-rw-r--r-- 1 root root 1.8K Apr 10 17:39 /usr/lib/python2.7/site-packages/EthIntfLib.py
-rw-r--r-- 1 root root 2.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/EthIntfUtil.py
-rw-r--r-- 1 root root 6.5K Apr 10 17:25 /usr/lib/python2.7/site-packages/Ethernet.py
-rw-r--r-- 1 root root  13K Apr 10 17:29 /usr/lib/python2.7/site-packages/Ethxmit.py
-rw-r--r-- 1 root root  174 Apr 10 17:29 /usr/lib/python2.7/site-packages/EthxmitProg.py
-rw-r--r-- 1 root root  639 Apr 10 17:55 /usr/lib/python2.7/site-packages/EventLib.py
-rw-r--r-- 1 root root  180 Apr 10 17:55 /usr/lib/python2.7/site-packages/EventMgr.py
-rw-r--r-- 1 root root  14K Apr 10 17:35 /usr/lib/python2.7/site-packages/EventMonAgent.py
-rw-r--r-- 1 root root 1003 Apr 10 17:09 /usr/lib/python2.7/site-packages/ExecTimeout.py
-rw-r--r-- 1 root root 8.2K Apr 10 17:20 /usr/lib/python2.7/site-packages/ExtEntity.py
-rw-r--r-- 1 root root  30K Apr 10 17:36 /usr/lib/python2.7/site-packages/ExtensionMgrLib.py
-rw-r--r-- 1 root root  926 Apr 10 17:44 /usr/lib/python2.7/site-packages/FanControllerDiagLib.py
-rw-r--r-- 1 root root 2.7K Apr 10 17:09 /usr/lib/python2.7/site-packages/FastServUtil.py
-rw-r--r-- 1 root root 8.4K Apr 10 17:32 /usr/lib/python2.7/site-packages/FaultInjectionCliHelper.py
-rw-r--r-- 1 root root  11K Apr 10 17:36 /usr/lib/python2.7/site-packages/Fdl.py
-rw-r--r-- 1 root root  13K Apr 10 18:42 /usr/lib/python2.7/site-packages/FdlIo.py
-rw-r--r-- 1 root root  156 Apr 10 18:16 /usr/lib/python2.7/site-packages/FhrpAgent.py
-rw-r--r-- 1 root root  592 Apr 10 18:16 /usr/lib/python2.7/site-packages/FhrpUtils.py
-rw-r--r-- 1 root root  13K Apr 10 17:18 /usr/lib/python2.7/site-packages/FileCliUtil.py
-rw-r--r-- 1 root root 6.5K Apr 16 02:11 /usr/lib/python2.7/site-packages/FileReplicationCmds.py
-rw-r--r-- 1 root root  36K Apr 16 02:11 /usr/lib/python2.7/site-packages/FileReplicatorAgent.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/FilteredDictView.py
-rw-r--r-- 1 root root 2.4K Apr 16 01:53 /usr/lib/python2.7/site-packages/FirmwareRev.py
-rw-r--r-- 1 root root  219 Apr 10 07:48 /usr/lib/python2.7/site-packages/FlashUtil.py
-rw-r--r-- 1 root root  25K Apr 10 17:36 /usr/lib/python2.7/site-packages/FpgaUtil.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:41 /usr/lib/python2.7/site-packages/FrameBufferAgent.py
-rw-r--r-- 1 root root  170 Apr 10 17:36 /usr/lib/python2.7/site-packages/FruAgent.py
-rw-r--r-- 1 root root  249 Apr 10 17:36 /usr/lib/python2.7/site-packages/FruUtils.py
-rw-r--r-- 1 root root 1012 Apr 10 17:09 /usr/lib/python2.7/site-packages/GenericReactor.py
-rw-r--r-- 1 root root 1.3K Apr 10 17:36 /usr/lib/python2.7/site-packages/GenfdlLib.py
-rw-r--r-- 1 root root 5.2K Apr 10 17:36 /usr/lib/python2.7/site-packages/GenprefdlLib.py
-rw-r--r-- 1 root root 1.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/GpioLedAgent.py
-rw-r--r-- 1 root root  29K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopRpc.py
-rw-r--r-- 1 root root  86K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopTracer.py
-rw-r--r-- 1 root root 1.6K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopTracerLogMsgs.py
-rw-r--r-- 1 root root 4.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/HostnameCli.py
-rw-r--r-- 1 root root  275 Apr 17 10:42 /usr/lib/python2.7/site-packages/HscAgent.py
-rw-r--r-- 1 root root  883 Apr 17 10:42 /usr/lib/python2.7/site-packages/HscCliLib.py
-rw-r--r-- 1 root root 4.5K Apr 10 17:09 /usr/lib/python2.7/site-packages/HumanReadable.py
-rw-r--r-- 1 root root 2.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/HwLogging.py
-rw-r--r-- 1 root root 2.9K Apr 10 17:29 /usr/lib/python2.7/site-packages/IProcUtil.py
-rw-r--r-- 1 root root  715 Apr 10 17:25 /usr/lib/python2.7/site-packages/IanaAddressFamilyNumbers.py
-rw-r--r-- 1 root root 3.8K Apr 10 17:25 /usr/lib/python2.7/site-packages/IanaMau.py
-rw-r--r-- 1 root root  82K Apr 10 17:51 /usr/lib/python2.7/site-packages/IdpromLib.py
-rw-r--r-- 1 root root 3.0K Apr 10 17:25 /usr/lib/python2.7/site-packages/IfLinkMonitor.py
-rw-r--r-- 1 root root  156 Apr 10 18:57 /usr/lib/python2.7/site-packages/IgmpAgent.py
-rw-r--r-- 1 root root  218 Apr 10 18:57 /usr/lib/python2.7/site-packages/IgmpLib.py
-rw-r--r-- 1 root root 9.0K Apr 10 18:07 /usr/lib/python2.7/site-packages/IgmpSnoopingAgent.py
-rw-r--r-- 1 root root  843 Apr 10 18:07 /usr/lib/python2.7/site-packages/IgmpSnoopingLib.py
-rw-r--r-- 1 root root  387 Apr 10 17:34 /usr/lib/python2.7/site-packages/IntfModels.py
-rw-r--r-- 1 root root  199 Apr 16 02:06 /usr/lib/python2.7/site-packages/IntfSnmpLib.py
-rw-r--r-- 1 root root  14K Apr 10 17:09 /usr/lib/python2.7/site-packages/IpUtils.py
-rw-r--r-- 1 root root 3.4K Apr 16 02:19 /usr/lib/python2.7/site-packages/IpcConnectionContext_pb2.py
-rw-r--r-- 1 root root  166 Apr 16 01:53 /usr/lib/python2.7/site-packages/Ipv6RouterAdvtAgent.py
-rw-r--r-- 1 root root 5.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/Ipv6RouterAdvtLib.py
-rw-r--r-- 1 root root  336 Apr 10 17:44 /usr/lib/python2.7/site-packages/IraAgent.py
-rw-r--r-- 1 root root 3.5K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraConsts.py
-rw-r--r-- 1 root root 4.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraIntfUtil.py
-rw-r--r-- 1 root root  360 Apr 10 17:44 /usr/lib/python2.7/site-packages/IraLogMsgs.py
-rw-r--r-- 1 root root  13K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraVrfCliLib.py
-rw-r--r-- 1 root root  29K Apr 16 02:19 /usr/lib/python2.7/site-packages/JobTrackerRpc.py
-rw-r--r-- 1 root root  176 Apr 10 17:56 /usr/lib/python2.7/site-packages/KernelFibAgent.py
-rw-r--r-- 1 root root  160 Apr 16 01:55 /usr/lib/python2.7/site-packages/KernelMfib.py
-rw-r--r-- 1 root root 8.7K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpAgent.py
-rw-r--r-- 1 root root  602 Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpConstants.py
-rw-r--r-- 1 root root 3.4K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpLib.py
-rw-r--r-- 1 root root 3.5K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpduSendRequest.py
-rw-r--r-- 1 root root  16K Apr 10 17:51 /usr/lib/python2.7/site-packages/LagAgent.py
-rw-r--r-- 1 root root  363 Apr 10 17:51 /usr/lib/python2.7/site-packages/LagName.py
-rw-r--r-- 1 root root  243 Apr 16 03:52 /usr/lib/python2.7/site-packages/LanzLib.py
-rw-r--r-- 1 root root  62K Apr 10 17:31 /usr/lib/python2.7/site-packages/Launcher.py
-rw-r--r-- 1 root root 1.4K Apr 10 17:31 /usr/lib/python2.7/site-packages/LauncherLib.py
-rw-r--r-- 1 root root 6.3K Apr 10 17:31 /usr/lib/python2.7/site-packages/LauncherUtil.py
-rw-r--r-- 1 root root  13K Apr 10 17:13 /usr/lib/python2.7/site-packages/LazyMount.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:29 /usr/lib/python2.7/site-packages/LegacyUtil.py
-rw-r--r-- 1 root root  277 Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpAgent.py
-rw-r--r-- 1 root root 1.8K Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpConstants.py
-rw-r--r-- 1 root root  633 Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpLib.py
-rw-r--r-- 1 root root 1.5K Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpTypes.py
-rw-r--r-- 1 root root 5.5K Apr 10 17:36 /usr/lib/python2.7/site-packages/LoadExtensionStatus.py
-rw-r--r-- 1 root root 4.8K Apr 10 17:36 /usr/lib/python2.7/site-packages/LoadExtensions.py
-rw-r--r-- 1 root root 2.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/LocalUserLib.py
-rw-r--r-- 1 root root 1.4K Apr 10 17:09 /usr/lib/python2.7/site-packages/LogRepeater.py
-rw-r--r-- 1 root root  12K Apr 16 01:56 /usr/lib/python2.7/site-packages/LoggingLib.py
-rw-r--r-- 1 root root  160 Apr 10 17:18 /usr/lib/python2.7/site-packages/MaintenanceModeAgent.py
-rw-r--r-- 1 root root 2.1K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioAgent.py
-rw-r--r-- 1 root root 3.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioBlob.py
-rw-r--r-- 1 root root 1019 Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioClient.py
-rw-r--r-- 1 root root  15K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioUtil.py
-rw-r--r-- 1 root root  15K Apr 10 17:09 /usr/lib/python2.7/site-packages/MemTools.py
-rw-r--r-- 1 root root 3.7K Apr 10 17:46 /usr/lib/python2.7/site-packages/MgmtSecuritySslStatusSm.py
-rw-r--r-- 1 root root  161 Apr 10 18:12 /usr/lib/python2.7/site-packages/MirroringAgent.py
-rw-r--r-- 1 root root  220 Apr 10 18:12 /usr/lib/python2.7/site-packages/MirroringLib.py
-rw-r--r-- 1 root root 7.9K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagHeartbeatLib.py
-rw-r--r-- 1 root root 3.5K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagShared.py
-rw-r--r-- 1 root root  16K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagTunnel.py
-rw-r--r-- 1 root root 4.3K Apr 10 18:42 /usr/lib/python2.7/site-packages/ModularSystemCardUtils.py
-rw-r--r-- 1 root root  22K Apr 10 17:51 /usr/lib/python2.7/site-packages/MolexDiagLib.py
-rw-r--r-- 1 root root  156 Apr 17 09:43 /usr/lib/python2.7/site-packages/MplsAgent.py
-rw-r--r-- 1 root root  219 Apr 17 09:43 /usr/lib/python2.7/site-packages/MplsLib.py
-rw-r--r-- 1 root root  753 Apr 16 01:52 /usr/lib/python2.7/site-packages/MrouteCliHelpers.py
-rw-r--r-- 1 root root 1.1K Apr 10 18:07 /usr/lib/python2.7/site-packages/MrpCliLib.py
-rw-r--r-- 1 root root  156 Apr 16 03:12 /usr/lib/python2.7/site-packages/MsdpAgent.py
-rw-r--r-- 1 root root 5.4K Apr 10 18:09 /usr/lib/python2.7/site-packages/MsrpCliLib.py
-rw-r--r-- 1 root root  702 Apr 10 18:09 /usr/lib/python2.7/site-packages/MsrpTypes.py
-rw-r--r-- 1 root root  42K Apr 10 17:18 /usr/lib/python2.7/site-packages/MultiRangeRule.py
-rw-r--r-- 1 root root  905 Apr 10 18:09 /usr/lib/python2.7/site-packages/MvrpCliLib.py
-rw-r--r-- 1 root root 1.5K Apr 10 17:09 /usr/lib/python2.7/site-packages/Netns.py
-rw-r--r-- 1 root root  207 Apr 10 07:26 /usr/lib/python2.7/site-packages/NetnsNames.py
-rw-r--r-- 1 root root  299 Apr 10 19:22 /usr/lib/python2.7/site-packages/NetworkTopologyAgent.py
-rw-r--r-- 1 root root  322 Apr 10 19:22 /usr/lib/python2.7/site-packages/NetworkTopologyAggregatorAgent.py
-rw-r--r-- 1 root root  18K Apr 16 04:22 /usr/lib/python2.7/site-packages/NorCal.py
-rw-r--r-- 1 root root  38K Apr 16 04:22 /usr/lib/python2.7/site-packages/NorCalInit.py
-rw-r--r-- 1 root root 2.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/NtpLib.py
-rw-r--r-- 1 root root  166 Apr 10 17:48 /usr/lib/python2.7/site-packages/ObjectTrackingAgent.py
-rw-r--r-- 1 root root  250 Apr 10 17:48 /usr/lib/python2.7/site-packages/ObjectTrackingLib.py
-rw-r--r-- 1 root root  15K Apr 16 02:43 /usr/lib/python2.7/site-packages/OpenStackClientLite.py
-rw-r--r-- 1 root root  23K Apr 16 02:43 /usr/lib/python2.7/site-packages/OpenStackPollerLib.py
-rw-r--r-- 1 root root  14K Apr 17 10:42 /usr/lib/python2.7/site-packages/OvsdbServerBase.py
-rw-r--r-- 1 root root 2.1K Apr 16 02:50 /usr/lib/python2.7/site-packages/PbrLib.py
-rw-r--r-- 1 root root  13K Apr 10 17:29 /usr/lib/python2.7/site-packages/Pci.py
-rw-r--r-- 1 root root  238 Apr 10 17:37 /usr/lib/python2.7/site-packages/PciBus.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:29 /usr/lib/python2.7/site-packages/PciUtil.py
-rw-r--r-- 1 root root 1.7K Apr 10 17:39 /usr/lib/python2.7/site-packages/PcieGpioDiagLib.py
-rw-r--r-- 1 root root  24K Apr 10 17:53 /usr/lib/python2.7/site-packages/PhyDiagLib.py
-rw-r--r-- 1 root root  48K Apr 16 01:51 /usr/lib/python2.7/site-packages/PhyEthtool.py
-rw-r--r-- 1 root root 3.6K Apr 10 17:53 /usr/lib/python2.7/site-packages/PhyFruLib.py
-rw-r--r-- 1 root root 7.8K Apr 16 04:22 /usr/lib/python2.7/site-packages/PicassoInit.py
-rw-r--r-- 1 root root  155 Apr 16 02:13 /usr/lib/python2.7/site-packages/PimAgent.py
-rw-r--r-- 1 root root  158 Apr 16 02:25 /usr/lib/python2.7/site-packages/PimBsrAgent.py
-rw-r--r-- 1 root root  21K Apr 16 02:25 /usr/lib/python2.7/site-packages/PimBsrModel.py
-rw-r--r-- 1 root root 3.1K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimCountersLib.py
-rw-r--r-- 1 root root  216 Apr 16 02:13 /usr/lib/python2.7/site-packages/PimLib.py
-rw-r--r-- 1 root root  24K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimModel.py
-rw-r--r-- 1 root root  23K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimModelLib.py
-rw-r--r-- 1 root root  178 Apr 16 03:01 /usr/lib/python2.7/site-packages/PimReg.py
-rw-r--r-- 1 root root 2.2K Apr 16 03:01 /usr/lib/python2.7/site-packages/PimRegModel.py
-rw-r--r-- 1 root root  177 Apr 16 02:52 /usr/lib/python2.7/site-packages/Pimsm.py
-rw-r--r-- 1 root root  32K Apr 16 02:52 /usr/lib/python2.7/site-packages/PimsmModel.py
-rw-r--r-- 1 root root 6.5K Apr 16 04:22 /usr/lib/python2.7/site-packages/PlxEepromUpgrade.py
-rw-r--r-- 1 root root 3.7K Apr 16 04:22 /usr/lib/python2.7/site-packages/PlxNic.py
-rw-r--r-- 1 root root  33K Apr 10 17:42 /usr/lib/python2.7/site-packages/PlxPex8600Lib.py
-rw-r--r-- 1 root root 3.3K Apr 10 17:57 /usr/lib/python2.7/site-packages/PmbusConstants.py
-rw-r--r-- 1 root root  246 Apr 10 17:57 /usr/lib/python2.7/site-packages/PmbusLib.py
-rw-r--r-- 1 root root 1.5K Apr 10 18:02 /usr/lib/python2.7/site-packages/PolicyMap.py
-rw-r--r-- 1 root root 2.3K Apr 10 17:54 /usr/lib/python2.7/site-packages/PowerDiagLib.py
-rw-r--r-- 1 root root  361 Apr 10 17:54 /usr/lib/python2.7/site-packages/PowerManagerAgent.py
-rw-r--r-- 1 root root  16K Apr 10 17:36 /usr/lib/python2.7/site-packages/Prefdl.py
-rw-r--r-- 1 root root 135K Apr 10 17:11 /usr/lib/python2.7/site-packages/ProcMgr.py
-rw-r--r-- 1 root root  974 Apr 10 17:11 /usr/lib/python2.7/site-packages/ProcMgrLib.py
-rw-r--r-- 1 root root 5.0K Apr 10 17:09 /usr/lib/python2.7/site-packages/Profile.py
-rw-r--r-- 1 root root  573 Apr 10 17:57 /usr/lib/python2.7/site-packages/PsmiConstants.py
-rw-r--r-- 1 root root  23K Apr 10 17:29 /usr/lib/python2.7/site-packages/PsocLib.py
-rw-r--r-- 1 root root  306 Apr 10 17:59 /usr/lib/python2.7/site-packages/Ptp.py
-rw-r--r-- 1 root root  448 Apr 10 17:59 /usr/lib/python2.7/site-packages/PtpConstants.py
-rw-r--r-- 1 root root  210 Apr 10 17:59 /usr/lib/python2.7/site-packages/PtpLib.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:25 /usr/lib/python2.7/site-packages/QTraceTestLib.py
-rw-r--r-- 1 root root  43K Apr 16 03:39 /usr/lib/python2.7/site-packages/QosLib.py
-rw-r--r-- 1 root root 2.2K Apr 16 03:39 /usr/lib/python2.7/site-packages/QosTypes.py
-rw-r--r-- 1 root root 4.2K Apr 10 17:09 /usr/lib/python2.7/site-packages/QuickTrace.py
-rw-r--r-- 1 root root  15K Apr 16 01:55 /usr/lib/python2.7/site-packages/Radius.py
-rw-r--r-- 1 root root 1.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/RadiusGroup.py
-rw-r--r-- 1 root root 8.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/RangeRule.py
-rw-r--r-- 1 root root 2.3K Apr 10 17:25 /usr/lib/python2.7/site-packages/RecvMsgUtils.py
-rw-r--r-- 1 root root  957 Apr 16 02:11 /usr/lib/python2.7/site-packages/RedSupLib.py
-rw-r--r-- 1 root root  17K Apr 16 02:11 /usr/lib/python2.7/site-packages/RedSupQueryLib.py
-rw-r--r-- 1 root root 8.4K Apr 10 17:18 /usr/lib/python2.7/site-packages/RegexParser.py
-rw-r--r-- 1 root root 4.4K Apr 16 02:11 /usr/lib/python2.7/site-packages/ReloadCauseLib.py
-rw-r--r-- 1 root root  170 Apr 10 18:26 /usr/lib/python2.7/site-packages/RibAgent.py
-rw-r--r-- 1 root root  16K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibCapiLib.py
-rw-r--r-- 1 root root 6.1K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibCliLib.py
-rw-r--r-- 1 root root  74K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibdDumpParser.py
-rw-r--r-- 1 root root  23K Apr 16 01:58 /usr/lib/python2.7/site-packages/RouteMapLib.py
-rw-r--r-- 1 root root 6.6K Apr 16 02:19 /usr/lib/python2.7/site-packages/RpcPayloadHeader_pb2.py
-rw-r--r-- 1 root root 3.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/RunCli.py
-rw-r--r-- 1 root root 2.0K Apr 10 17:57 /usr/lib/python2.7/site-packages/ScdAgentStrings.py
-rw-r--r-- 1 root root  598 Apr 10 17:57 /usr/lib/python2.7/site-packages/ScdAgentUtil.py
-rw-r--r-- 1 root root  378 Apr 10 17:11 /usr/lib/python2.7/site-packages/ScdEmUtils.py
-rw-r--r-- 1 root root 2.3K Apr 10 17:29 /usr/lib/python2.7/site-packages/ScdRegisters.py
-rw-r--r-- 1 root root 3.0K Apr 10 18:59 /usr/lib/python2.7/site-packages/Schan.py
-rw-r--r-- 1 root root  18K Apr 10 18:59 /usr/lib/python2.7/site-packages/SchanAccelLib.py
-rw-r--r-- 1 root root 4.7K Apr 10 18:59 /usr/lib/python2.7/site-packages/SchanMsgLib.py
-rw-r--r-- 1 root root  13K Apr 10 17:18 /usr/lib/python2.7/site-packages/SecretCli.py
-rw-r--r-- 1 root root 8.7K Apr 10 17:09 /usr/lib/python2.7/site-packages/ServerAnchor.py
-rw-r--r-- 1 root root  531 Apr 10 18:43 /usr/lib/python2.7/site-packages/ServiceAgentServiceLib.py
-rw-r--r-- 1 root root  779 Apr 10 18:03 /usr/lib/python2.7/site-packages/ServicePluginContext.py
-rw-r--r-- 1 root root 1.2K Apr 10 08:08 /usr/lib/python2.7/site-packages/SessionUrlHelper.py
-rw-r--r-- 1 root root 6.7K Apr 10 17:18 /usr/lib/python2.7/site-packages/SessionUrlUtil.py
-rw-r--r-- 1 root root 8.8K Apr 10 17:18 /usr/lib/python2.7/site-packages/SetRule.py
-rw-r--r-- 1 root root 1.2K Apr 16 02:13 /usr/lib/python2.7/site-packages/SflowConst.py
-rw-r--r-- 1 root root 9.5K Apr 16 02:13 /usr/lib/python2.7/site-packages/SflowUtil.py
-rw-r--r-- 1 root root  161 Apr 16 02:13 /usr/lib/python2.7/site-packages/Sflowtool.py
-rw-r--r-- 1 root root 1.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/ShowRunOutputModel.py
-rw-r--r-- 1 root root 9.3K Apr 16 04:22 /usr/lib/python2.7/site-packages/Si5338.py
-rw-r--r-- 1 root root 2.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/SimpleConfigFile.py
-rw-r--r-- 1 root root 3.6K Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashLazyMount.py
-rw-r--r-- 1 root root  896 Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashMount.py
-rw-r--r-- 1 root root  447 Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashUtils.py
-rw-r--r-- 1 root root 1.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusAgent.py
-rw-r--r-- 1 root root 5.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusClient.py
-rw-r--r-- 1 root root 3.8K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusDiagLib.py
-rw-r--r-- 1 root root  47K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusUtil.py
-rw-r--r-- 1 root root 6.2K Apr 16 02:01 /usr/lib/python2.7/site-packages/Snmp.py
-rw-r--r-- 1 root root 3.4K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpCliRule.py
-rw-r--r-- 1 root root 2.1K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpCliUtil.py
-rw-r--r-- 1 root root  590 Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpDebugUtils.py
-rw-r--r-- 1 root root 3.3K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpNotificationRegistrar.py
-rw-r--r-- 1 root root  774 Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpObjectId.py
-rw-r--r-- 1 root root 6.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/Sol.py
-rw-r--r-- 1 root root  12K Apr 10 19:12 /usr/lib/python2.7/site-packages/SolUtil.py
-rw-r--r-- 1 root root 4.2K Apr 10 17:46 /usr/lib/python2.7/site-packages/SslCertKey.py
-rw-r--r-- 1 root root  31K Apr 10 17:46 /usr/lib/python2.7/site-packages/SslReactor.py
-rw-r--r-- 1 root root  18K Apr 10 17:13 /usr/lib/python2.7/site-packages/StageHelper.py
-rw-r--r-- 1 root root  232 Apr 10 17:13 /usr/lib/python2.7/site-packages/StageMgr.py
-rw-r--r-- 1 root root  17K Apr 10 18:04 /usr/lib/python2.7/site-packages/StpCliUtil.py
-rw-r--r-- 1 root root 1.6K Apr 10 18:04 /usr/lib/python2.7/site-packages/StpConst.py
-rw-r--r-- 1 root root  363 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpName.py
-rw-r--r-- 1 root root  873 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpStableUtil.py
-rw-r--r-- 1 root root  371 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpTopologyName.py
-rw-r--r-- 1 root root 3.8K Apr 10 17:09 /usr/lib/python2.7/site-packages/Strace.py
-rw-r--r-- 1 root root 6.9K Apr 10 17:18 /usr/lib/python2.7/site-packages/StringRule.py
-rw-r--r-- 1 root root  21K Apr 10 17:32 /usr/lib/python2.7/site-packages/SuperServer.py
-rw-r--r-- 1 root root  291 Apr 10 17:32 /usr/lib/python2.7/site-packages/SuperServerAgent.py
-rw-r--r-- 1 root root 9.5K Apr 10 17:14 /usr/lib/python2.7/site-packages/Switchover.py
-rw-r--r-- 1 root root 5.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/SysMgrLib.py
-rw-r--r-- 1 root root 2.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/SysMgrLogMsgs.py
-rw-r--r-- 1 root root  271 Apr 16 02:03 /usr/lib/python2.7/site-packages/SysMgrSnmp.py
-rw-r--r-- 1 root root  878 Apr 10 17:15 /usr/lib/python2.7/site-packages/SysdbAgent.py
-rw-r--r-- 1 root root  14K Apr 10 17:15 /usr/lib/python2.7/site-packages/SysdbEntityManager.py
-rw-r--r-- 1 root root 4.1K Apr 10 17:13 /usr/lib/python2.7/site-packages/SysdbUtil.py
-rw-r--r-- 1 root root  37K Apr 10 17:09 /usr/lib/python2.7/site-packages/TableOutput.py
-rw-r--r-- 1 root root  20K Apr 16 01:56 /usr/lib/python2.7/site-packages/Tacacs.py
-rw-r--r-- 1 root root  738 Apr 16 01:56 /usr/lib/python2.7/site-packages/TacacsGroup.py
-rw-r--r-- 1 root root 2.0K Apr 16 01:56 /usr/lib/python2.7/site-packages/TacacsLib.py
-rw-r--r-- 1 root root  15K Apr 16 01:55 /usr/lib/python2.7/site-packages/TcpdumpLib.py
-rw-r--r-- 1 root root  384 Apr 16 01:53 /usr/lib/python2.7/site-packages/Terminal.py
-rw-r--r-- 1 root root  253 Apr 10 17:44 /usr/lib/python2.7/site-packages/ThermoMgrLib.py
-rw-r--r-- 1 root root  369 Apr 10 17:43 /usr/lib/python2.7/site-packages/TopoAgentName.py
-rw-r--r-- 1 root root 6.3K Apr 10 17:09 /usr/lib/python2.7/site-packages/TraceLogging.py
-rw-r--r-- 1 root root 1.4K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdateCpld.py
-rw-r--r-- 1 root root 1.3K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdatePex.py
-rw-r--r-- 1 root root 3.7K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdateUcd.py
-rw-r--r-- 1 root root  23K Apr 10 17:18 /usr/lib/python2.7/site-packages/Url.py
-rw-r--r-- 1 root root 4.5K Apr 10 17:57 /usr/lib/python2.7/site-packages/UserFpgaUtil.py
-rw-r--r-- 1 root root 5.7K Apr 10 17:18 /usr/lib/python2.7/site-packages/UtmpDump.py
-rw-r--r-- 1 root root 1.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/Vlan.py
-rw-r--r-- 1 root root 2.3K Apr 16 01:50 /usr/lib/python2.7/site-packages/VmAgent.py
-rw-r--r-- 1 root root  13K Apr 16 02:21 /usr/lib/python2.7/site-packages/VmTracerEventHandlerLib.py
-rw-r--r-- 1 root root 2.2K Apr 10 17:25 /usr/lib/python2.7/site-packages/VrfIdMapTestLib.py
-rw-r--r-- 1 root root  279 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanAgent.py
-rw-r--r-- 1 root root  270 Apr 10 19:06 /usr/lib/python2.7/site-packages/VxlanController.py
-rw-r--r-- 1 root root  212 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanLib.py
-rw-r--r-- 1 root root  289 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanSwFwdAgent.py
-rw-r--r-- 1 root root 4.5K Apr 10 19:06 /usr/lib/python2.7/site-packages/VxlanVniLib.py
-rw-r--r-- 1 root root 7.8K Apr 10 17:14 /usr/lib/python2.7/site-packages/WaitForWarmup.py
-rw-r--r-- 1 root root 1.8K Apr 10 17:11 /usr/lib/python2.7/site-packages/Watchdog.py
-rw-r--r-- 1 root root  705 Apr 16 03:50 /usr/lib/python2.7/site-packages/WbemLib.py
-rw-r--r-- 1 root root  15K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrCtrlDiag.py
-rw-r--r-- 1 root root 7.9K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrLaneMgrFdlHelper.py
-rw-r--r-- 1 root root 1.8K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrLib.py
-rw-r--r-- 1 root root  54K Apr 18 06:18 /usr/lib/python2.7/site-packages/Xmpp.py
-rw-r--r-- 1 root root 4.2K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppLogMsgs.py
-rw-r--r-- 1 root root 2.3K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppModelNameReactor.py
-rw-r--r-- 1 root root  17K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppMultiCli.py
-rw-r--r-- 1 root root 4.8K Apr 16 02:21 /usr/lib/python2.7/site-packages/ZeroTouch.py
-rw-r--r-- 1 root root  400 Apr 16 02:21 /usr/lib/python2.7/site-packages/ZeroTouchBlackList.py
-rw-r--r-- 1 root root  730 Apr 10 08:22 /usr/lib/python2.7/site-packages/cpufabric.py
-rw-r--r-- 1 root root 1.5K Apr 10 17:29 /usr/lib/python2.7/site-packages/diag_ctypes.py
-rwxr-xr-x 1 root root 3.9K Apr 10 17:45 /usr/lib/python2.7/site-packages/dmamem.py
-rw-r--r-- 1 root root  126 Aug 11  2010 /usr/lib/python2.7/site-packages/easy_install.py
-rw-r--r-- 1 root root  325 Apr 10 17:11 /usr/lib/python2.7/site-packages/fastLoadSetup.py
-rw-r--r-- 1 root root  17K Apr 16 01:55 /usr/lib/python2.7/site-packages/freeradiusclient.py
-rw-r--r-- 1 root root 2.2K Apr 10 17:25 /usr/lib/python2.7/site-packages/if_ether_arista.py
-rw-r--r-- 1 root root  203 Apr 10 18:42 /usr/lib/python2.7/site-packages/issh.py
-rw-r--r-- 1 root root 9.2K Apr 16 01:56 /usr/lib/python2.7/site-packages/libtacplus.py
-rw-r--r-- 1 root root 113K Apr 10 07:13 /usr/lib/python2.7/site-packages/libvirt.py
-rwxr-xr-x 1 root root 7.8K Apr 10 17:49 /usr/lib/python2.7/site-packages/picasso.py
-rw-r--r-- 1 root root  87K Aug 11  2010 /usr/lib/python2.7/site-packages/pkg_resources.py
-rwxr-xr-x 1 root root  81K Oct 18  2010 /usr/lib/python2.7/site-packages/pyinotify.py
-rw-r--r-- 1 root root  14K Apr 10 18:59 /usr/lib/python2.7/site-packages/schan_accel.py
-rw-r--r-- 1 root root 3.7K Apr 10 08:08 /usr/lib/python2.7/site-packages/seeprom.py
-rw-r--r-- 1 root root 2.4K Aug 11  2010 /usr/lib/python2.7/site-packages/site.py
-rw-r--r-- 1 root root  30K Aug  6  2010 /usr/lib/python2.7/site-packages/snack.py
-rw-r--r-- 1 root root 2.5K Aug 19  2009 /usr/lib/python2.7/site-packages/sqlitecachec.py
bash-4.1# ls -alh /usr/lib/python2.7/site-packages/CliPlugin/*.py
-rw-r--r-- 1 root root  79K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AaaCli.py
-rw-r--r-- 1 root root 9.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AaaModel.py
-rw-r--r-- 1 root root  80K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCli.py
-rw-r--r-- 1 root root  13K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModel.py
-rw-r--r-- 1 root root  19K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModelImpl.py
-rw-r--r-- 1 root root  20K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModelRender.py
-rw-r--r-- 1 root root  29K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliRules.py
-rw-r--r-- 1 root root  46K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCmdChains.py
-rw-r--r-- 1 root root 4.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/AgentPingCli.py
-rw-r--r-- 1 root root 4.1K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/AgentResourceCli.py
-rw-r--r-- 1 root root 3.8K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AgentShutdownCli.py
-rw-r--r-- 1 root root 1.7K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCliLib.py
-rw-r--r-- 1 root root  844 Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCounters.py
-rw-r--r-- 1 root root 4.2K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCpuFabric.py
-rw-r--r-- 1 root root  13K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleFibCli.py
-rw-r--r-- 1 root root 9.6K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleRouting.py
-rw-r--r-- 1 root root 2.4K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpCommon.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/ArpEventMonCli.py
-rw-r--r-- 1 root root  34K Apr 16 02:56 /usr/lib/python2.7/site-packages/CliPlugin/ArpInspectionCli.py
-rw-r--r-- 1 root root 9.7K Apr 16 02:56 /usr/lib/python2.7/site-packages/CliPlugin/ArpInspectionModels.py
-rw-r--r-- 1 root root 9.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIp6Cli.py
-rw-r--r-- 1 root root 8.7K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIpCli.py
-rw-r--r-- 1 root root 5.2K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIpIntfCli.py
-rw-r--r-- 1 root root 2.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpModel.py
-rw-r--r-- 1 root root 1022 Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpShowTechCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:37 /usr/lib/python2.7/site-packages/CliPlugin/AsuReloadCli.py
-rw-r--r-- 1 root root  15K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/BackupIntfCli.py
-rw-r--r-- 1 root root 2.7K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Banner.py
-rw-r--r-- 1 root root 8.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/CliPlugin/BeaconLedCli.py
-rw-r--r-- 1 root root  40K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/BfdCli.py
-rw-r--r-- 1 root root  31K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/BgpCliModels.py
-rw-r--r-- 1 root root 9.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/BootCli.py
-rw-r--r-- 1 root root  47K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/BridgingCli.py
-rw-r--r-- 1 root root 7.9K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/BridgingCliModel.py
-rw-r--r-- 1 root root  446 Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/BridgingEtbaCli.py
-rw-r--r-- 1 root root  35K Apr 16 01:57 /usr/lib/python2.7/site-packages/CliPlugin/Capi.py
-rw-r--r-- 1 root root 8.0K Apr 16 01:57 /usr/lib/python2.7/site-packages/CliPlugin/CapiModel.py
-rw-r--r-- 1 root root  13K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliCli.py
-rw-r--r-- 1 root root  837 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliCliModel.py
-rw-r--r-- 1 root root  847 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliError.py
-rw-r--r-- 1 root root  17K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/CliSchedulerCli.py
-rw-r--r-- 1 root root 9.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/ClockCli.py
-rw-r--r-- 1 root root 1.4K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ConfigConvert.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ConfigMgmtMode.py
-rw-r--r-- 1 root root  26K Apr 10 08:08 /usr/lib/python2.7/site-packages/CliPlugin/ConfigSessionCli.py
-rw-r--r-- 1 root root 5.3K Apr 10 08:08 /usr/lib/python2.7/site-packages/CliPlugin/ConfigSessionModel.py
-rw-r--r-- 1 root root 2.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Console.py
-rw-r--r-- 1 root root  28K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerCli.py
-rw-r--r-- 1 root root  44K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/ControllerDebugCli.py
-rw-r--r-- 1 root root 1.6K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/ControllerDebugModel.py
-rw-r--r-- 1 root root  19K Apr 10 18:39 /usr/lib/python2.7/site-packages/CliPlugin/ControllerRegistration.py
-rw-r--r-- 1 root root 6.3K Apr 10 18:39 /usr/lib/python2.7/site-packages/CliPlugin/ControllerRegistrationModel.py
-rw-r--r-- 1 root root 4.5K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerdbLib.py
-rw-r--r-- 1 root root 8.4K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerdbModel.py
-rw-r--r-- 1 root root 3.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/CoredumpControl.py
-rw-r--r-- 1 root root 1.5K Apr 10 08:22 /usr/lib/python2.7/site-packages/CliPlugin/CpuFabricCli.py
-rw-r--r-- 1 root root 3.1K Apr 10 17:31 /usr/lib/python2.7/site-packages/CliPlugin/DaemonAgentModel.py
-rw-r--r-- 1 root root  16K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DcbxCli.py
-rw-r--r-- 1 root root 6.9K Apr 10 17:20 /usr/lib/python2.7/site-packages/CliPlugin/DebugMessageCli.py
-rw-r--r-- 1 root root 1.4K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/DebugServiceCli.py
-rw-r--r-- 1 root root  352 Apr 10 17:20 /usr/lib/python2.7/site-packages/CliPlugin/DebugShowTechCli.py
-rw-r--r-- 1 root root  984 Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/DebuggingCli.py
-rw-r--r-- 1 root root  11K Apr 16 01:50 /usr/lib/python2.7/site-packages/CliPlugin/DecapGroupCli.py
-rw-r--r-- 1 root root  25K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DhcpRelayHelperCli.py
-rw-r--r-- 1 root root  17K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DhcpSnoopingCli.py
-rw-r--r-- 1 root root  35K Apr 10 17:29 /usr/lib/python2.7/site-packages/CliPlugin/DiagCli.py
-rw-r--r-- 1 root root  49K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowCli.py
-rw-r--r-- 1 root root 8.8K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowCliLib.py
-rw-r--r-- 1 root root 3.5K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowModel.py
-rw-r--r-- 1 root root 8.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/DonkeyCli.py
-rw-r--r-- 1 root root  24K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/Dot1xCli.py
-rw-r--r-- 1 root root 8.1K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/Dot1xModel.py
-rw-r--r-- 1 root root 6.6K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraEthIntfCli.py
-rw-r--r-- 1 root root 5.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraEthIntfCliModel.py
-rw-r--r-- 1 root root  955 Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraShowTechCli.py
-rw-r--r-- 1 root root 1.8K Apr 16 02:10 /usr/lib/python2.7/site-packages/CliPlugin/EbraSnmpCli.py
-rw-r--r-- 1 root root 8.0K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/EmailCli.py
-rw-r--r-- 1 root root  24K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/EnvironmentCli.py
-rw-r--r-- 1 root root  11K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/EnvironmentModels.py
-rw-r--r-- 1 root root  22K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/ErrdisableCli.py
-rw-r--r-- 1 root root 131K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthIntfCli.py
-rw-r--r-- 1 root root  20K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthIntfModel.py
-rw-r--r-- 1 root root  949 Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthShowTechCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:55 /usr/lib/python2.7/site-packages/CliPlugin/EventCli.py
-rw-r--r-- 1 root root  19K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/EventMonCli.py
-rw-r--r-- 1 root root  12K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ExtensionMgrCli.py
-rw-r--r-- 1 root root 6.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ExtensionMgrCliModel.py
-rw-r--r-- 1 root root 1.1K Apr 10 17:32 /usr/lib/python2.7/site-packages/CliPlugin/FaultInjectionCli.py
-rw-r--r-- 1 root root  98K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/FhrpCli.py
-rw-r--r-- 1 root root  14K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/FhrpModels.py
-rw-r--r-- 1 root root  49K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/FileCli.py
-rw-r--r-- 1 root root 5.3K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/FileCliModels.py
-rw-r--r-- 1 root root  11K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FileSystemMountCli.py
-rw-r--r-- 1 root root  27K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FruCli.py
-rw-r--r-- 1 root root  11K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FruModel.py
-rw-r--r-- 1 root root  14K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfCli.py
-rw-r--r-- 1 root root 2.2K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfIntfCli.py
-rw-r--r-- 1 root root 6.2K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfModels.py
-rw-r--r-- 1 root root 8.3K Apr 10 17:47 /usr/lib/python2.7/site-packages/CliPlugin/GatedBgpCli.py
-rw-r--r-- 1 root root 2.0K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/GmpCli.py
-rw-r--r-- 1 root root  54K Apr 16 02:19 /usr/lib/python2.7/site-packages/CliPlugin/HadoopTracerCli.py
-rw-r--r-- 1 root root  44K Apr 16 02:19 /usr/lib/python2.7/site-packages/CliPlugin/HadoopTracerModel.py
-rw-r--r-- 1 root root  33K Apr 17 10:42 /usr/lib/python2.7/site-packages/CliPlugin/HscCli.py
-rw-r--r-- 1 root root  25K Apr 17 10:42 /usr/lib/python2.7/site-packages/CliPlugin/HscModel.py
-rw-r--r-- 1 root root  64K Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpCli.py
-rw-r--r-- 1 root root  17K Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpCliModel.py
-rw-r--r-- 1 root root  23K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyCli.py
-rw-r--r-- 1 root root 7.3K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyModel.py
-rw-r--r-- 1 root root  438 Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyShowTechCli.py
-rw-r--r-- 1 root root 7.3K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpProfileCli.py
-rw-r--r-- 1 root root  495 Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpShowTechCli.py
-rw-r--r-- 1 root root  96K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingCli.py
-rw-r--r-- 1 root root 1.5K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingDebugCli.py
-rw-r--r-- 1 root root 6.7K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingEtbaCli.py
-rw-r--r-- 1 root root 1.8K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingEventMonCli.py
-rw-r--r-- 1 root root 1.2K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingIntfJanitor.py
-rw-r--r-- 1 root root  700 Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingShowTechCli.py
-rw-r--r-- 1 root root  16K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/InstallCli.py
-rw-r--r-- 1 root root  72K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfCli.py
-rw-r--r-- 1 root root  17K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfModel.py
-rw-r--r-- 1 root root  13K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfRangeCli.py
-rw-r--r-- 1 root root  429 Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfShowTechCli.py
-rw-r--r-- 1 root root 4.1K Apr 16 02:06 /usr/lib/python2.7/site-packages/CliPlugin/IntfSnmpCli.py
-rw-r--r-- 1 root root 5.0K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/Ip6Addr.py
-rw-r--r-- 1 root root  36K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Ip6RaCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/IpAddr.py
-rw-r--r-- 1 root root  16K Apr 16 01:48 /usr/lib/python2.7/site-packages/CliPlugin/IpEth.py
-rw-r--r-- 1 root root 6.5K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/IpGenAddr.py
-rw-r--r-- 1 root root  849 Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraCommonCli.py
-rw-r--r-- 1 root root 2.3K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraEtbaCli.py
-rw-r--r-- 1 root root  55K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6Cli.py
-rw-r--r-- 1 root root  24K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6IntfCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6Model.py
-rw-r--r-- 1 root root  80K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpCli.py
-rw-r--r-- 1 root root  34K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpIntfCli.py
-rw-r--r-- 1 root root  13K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpModel.py
-rw-r--r-- 1 root root  12K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraKernelIpCli.py
-rw-r--r-- 1 root root 7.0K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraNexthopGroupModel.py
-rw-r--r-- 1 root root  32K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraRouteCommon.py
-rw-r--r-- 1 root root 1.2K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraShowTechCli.py
-rw-r--r-- 1 root root 6.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraUrpfCli.py
-rw-r--r-- 1 root root  26K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraVrfCli.py
-rw-r--r-- 1 root root 4.7K Apr 10 17:56 /usr/lib/python2.7/site-packages/CliPlugin/KernelFibCli.py
-rw-r--r-- 1 root root  87K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagCli.py
-rw-r--r-- 1 root root  20K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfCli.py
-rw-r--r-- 1 root root 3.2K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfMlagCli.py
-rw-r--r-- 1 root root 4.3K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfModel.py
-rw-r--r-- 1 root root  656 Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagShowTechCli.py
-rw-r--r-- 1 root root  42K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzCli.py
-rw-r--r-- 1 root root  34K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzCliModel.py
-rw-r--r-- 1 root root  13K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzIntfCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:31 /usr/lib/python2.7/site-packages/CliPlugin/LauncherDaemonCli.py
-rw-r--r-- 1 root root  13K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/LinkFlapCli.py
-rw-r--r-- 1 root root 9.2K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpConfigCli.py
-rw-r--r-- 1 root root 7.4K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpModel.py
-rw-r--r-- 1 root root  32K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpStatusCli.py
-rw-r--r-- 1 root root  551 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/LoadPlugins.py
-rw-r--r-- 1 root root  59K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/LoggingCli.py
-rw-r--r-- 1 root root  19K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/LoopProtectCli.py
-rw-r--r-- 1 root root  11K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/LoopProtectModels.py
-rw-r--r-- 1 root root 7.5K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/LoopbackIntfCli.py
-rw-r--r-- 1 root root  927 Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/MacAddr.py
-rw-r--r-- 1 root root 1.5K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/MacEventMonCli.py
-rw-r--r-- 1 root root 4.9K Apr 10 17:45 /usr/lib/python2.7/site-packages/CliPlugin/MacFlapCli.py
-rw-r--r-- 1 root root 1.6K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/MacLearning.py
-rw-r--r-- 1 root root 7.8K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ManagementActiveIntfCli.py
-rw-r--r-- 1 root root 8.9K Apr 10 18:00 /usr/lib/python2.7/site-packages/CliPlugin/McastBoundaryCli.py
-rw-r--r-- 1 root root 2.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/MgmtDefaults.py
-rw-r--r-- 1 root root  38K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/MirroringCli.py
-rw-r--r-- 1 root root 7.0K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/MirroringModels.py
-rw-r--r-- 1 root root  24K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagConfigCli.py
-rw-r--r-- 1 root root  18K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagModel.py
-rw-r--r-- 1 root root  19K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagShowCli.py
-rw-r--r-- 1 root root 2.6K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagTunnelCli.py
-rw-r--r-- 1 root root 1.3K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagTunnelModel.py
-rw-r--r-- 1 root root 3.0K Apr 16 02:54 /usr/lib/python2.7/site-packages/CliPlugin/MlagVrrpCli.py
-rw-r--r-- 1 root root  731 Apr 16 02:54 /usr/lib/python2.7/site-packages/CliPlugin/MlagVrrpModels.py
-rw-r--r-- 1 root root  17K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagWarningCli.py
-rw-r--r-- 1 root root 5.9K Apr 10 18:42 /usr/lib/python2.7/site-packages/CliPlugin/ModuleCli.py
-rw-r--r-- 1 root root 1.7K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ModuleIntfCli.py
-rw-r--r-- 1 root root 3.5K Apr 10 18:42 /usr/lib/python2.7/site-packages/CliPlugin/ModuleModels.py
-rw-r--r-- 1 root root 4.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/MonitoredNexthopCli.py
-rw-r--r-- 1 root root 1.5K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/MonitoredNexthopModel.py
-rw-r--r-- 1 root root 7.0K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/MoreCli.py
-rw-r--r-- 1 root root  24K Apr 17 09:43 /usr/lib/python2.7/site-packages/CliPlugin/MplsCli.py
-rw-r--r-- 1 root root  11K Apr 17 09:43 /usr/lib/python2.7/site-packages/CliPlugin/MplsModel.py
-rw-r--r-- 1 root root 8.9K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/MribConfigCli.py
-rw-r--r-- 1 root root  37K Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteCli.py
-rw-r--r-- 1 root root 2.1K Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteEtbaCli.py
-rw-r--r-- 1 root root 1.9K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/MrouteEventMonCli.py
-rw-r--r-- 1 root root  414 Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteShowTechCli.py
-rw-r--r-- 1 root root  32K Apr 16 03:12 /usr/lib/python2.7/site-packages/CliPlugin/MsdpCli.py
-rw-r--r-- 1 root root  48K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpCli.py
-rw-r--r-- 1 root root  29K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpModels.py
-rw-r--r-- 1 root root 3.0K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpStream.py
-rw-r--r-- 1 root root  10K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MvrpCli.py
-rw-r--r-- 1 root root  12K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MvrpModels.py
-rw-r--r-- 1 root root  22K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/NetworkCli.py
-rw-r--r-- 1 root root  35K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/NetworkToolsCli.py
-rw-r--r-- 1 root root 3.6K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopology.py
-rw-r--r-- 1 root root 6.5K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopologyModels.py
-rw-r--r-- 1 root root 3.1K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopologyService.py
-rw-r--r-- 1 root root 6.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/NetworkUrlCli.py
-rw-r--r-- 1 root root  19K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/Ntp.py
-rw-r--r-- 1 root root 9.1K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/OldDhcpRelayCli.py
-rw-r--r-- 1 root root  46K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowCli.py
-rw-r--r-- 1 root root  28K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowCliLib.py
-rw-r--r-- 1 root root  34K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowModel.py
-rw-r--r-- 1 root root  91K Apr 16 02:43 /usr/lib/python2.7/site-packages/CliPlugin/OpenStack.py
-rw-r--r-- 1 root root  41K Apr 16 02:43 /usr/lib/python2.7/site-packages/CliPlugin/OpenStackModels.py
-rw-r--r-- 1 root root  15K Apr 16 02:20 /usr/lib/python2.7/site-packages/CliPlugin/OspfCliModels.py
-rw-r--r-- 1 root root 9.2K Apr 10 17:37 /usr/lib/python2.7/site-packages/CliPlugin/PciCli.py
-rw-r--r-- 1 root root 4.2K Apr 10 17:41 /usr/lib/python2.7/site-packages/CliPlugin/PcieNtCli.py
-rw-r--r-- 1 root root 2.4K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/PeerIntfCli.py
-rw-r--r-- 1 root root  13K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PfcCli.py
-rw-r--r-- 1 root root  33K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/PhysicalIntfRule.py
-rw-r--r-- 1 root root  28K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PimBsrConfigCli.py
-rw-r--r-- 1 root root 8.5K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PimBsrShowCli.py
-rw-r--r-- 1 root root 1.7K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimClearCli.py
-rw-r--r-- 1 root root  27K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimCliLib.py
-rw-r--r-- 1 root root 9.3K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimConfigCheckModel.py
-rw-r--r-- 1 root root  14K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimConfigCli.py
-rw-r--r-- 1 root root  870 Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimIntfJanitor.py
-rw-r--r-- 1 root root 5.8K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegConfigCheck.py
-rw-r--r-- 1 root root 5.8K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegConfigCli.py
-rw-r--r-- 1 root root 3.5K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegShowCli.py
-rw-r--r-- 1 root root  12K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimShowCli.py
-rw-r--r-- 1 root root  567 Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimShowTechCli.py
-rw-r--r-- 1 root root 3.8K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliClear.py
-rw-r--r-- 1 root root 9.6K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliConfig.py
-rw-r--r-- 1 root root 1.2K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliLib.py
-rw-r--r-- 1 root root  26K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliShow.py
-rw-r--r-- 1 root root 1.9K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/PmbusCli.py
-rw-r--r-- 1 root root  63K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapCliLib.py
-rw-r--r-- 1 root root  11K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapModel.py
-rw-r--r-- 1 root root  20K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapModelImpl.py
-rw-r--r-- 1 root root  19K Apr 10 17:45 /usr/lib/python2.7/site-packages/CliPlugin/PortSecCli.py
-rw-r--r-- 1 root root  22K Apr 10 17:54 /usr/lib/python2.7/site-packages/CliPlugin/PowerCli.py
-rw-r--r-- 1 root root 1.8K Apr 10 17:54 /usr/lib/python2.7/site-packages/CliPlugin/PowerDiagsCli.py
-rw-r--r-- 1 root root 1.4K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/PsmiCli.py
-rw-r--r-- 1 root root  84K Apr 10 17:59 /usr/lib/python2.7/site-packages/CliPlugin/PtpCli.py
-rw-r--r-- 1 root root  609 Apr 10 17:59 /usr/lib/python2.7/site-packages/CliPlugin/PtpIntfJanitor.py
-rw-r--r-- 1 root root  12K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PtpTimeSyncCli.py
-rw-r--r-- 1 root root 5.2K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PtpTimeSyncModel.py
-rw-r--r-- 1 root root 213K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCli.py
-rw-r--r-- 1 root root  24K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCliLib.py
-rw-r--r-- 1 root root  39K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCliModel.py
-rw-r--r-- 1 root root 2.5K Apr 16 03:44 /usr/lib/python2.7/site-packages/CliPlugin/QosSnmp.py
-rw-r--r-- 1 root root  21K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/RadiusCli.py
-rw-r--r-- 1 root root  66K Apr 16 02:50 /usr/lib/python2.7/site-packages/CliPlugin/ReachabilityMonitorCli.py
-rw-r--r-- 1 root root  38K Apr 16 02:50 /usr/lib/python2.7/site-packages/CliPlugin/ReachabilityMonitorModel.py
-rw-r--r-- 1 root root  17K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupCli.py
-rw-r--r-- 1 root root  804 Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupCliFormatSpec.py
-rw-r--r-- 1 root root 2.2K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupFileCli.py
-rw-r--r-- 1 root root 7.0K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupModels.py
-rw-r--r-- 1 root root 5.1K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ReloadCauseCli.py
-rw-r--r-- 1 root root  17K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ReloadCli.py
-rw-r--r-- 1 root root 4.7K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/ReloadConfigSaveCli.py
-rw-r--r-- 1 root root 2.4K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ReloadElectionCli.py
-rw-r--r-- 1 root root 5.1K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ReloadFileSyncCli.py
-rw-r--r-- 1 root root 4.7K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibIp6Cli.py
-rw-r--r-- 1 root root 4.8K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibIpCli.py
-rw-r--r-- 1 root root 5.0K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibShowTechCli.py
-rw-r--r-- 1 root root  446 Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/RipShowTechCli.py
-rw-r--r-- 1 root root 3.3K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/RouteDistinguisher.py
-rw-r--r-- 1 root root 1.3K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/RouteEventMonCli.py
-rw-r--r-- 1 root root 106K Apr 16 01:58 /usr/lib/python2.7/site-packages/CliPlugin/RouteMapCli.py
-rw-r--r-- 1 root root  19K Apr 16 01:58 /usr/lib/python2.7/site-packages/CliPlugin/RouteMapCliModels.py
-rw-r--r-- 1 root root 190K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/RoutingBgpCli.py
-rw-r--r-- 1 root root  68K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/RoutingBgpShowCli.py
-rw-r--r-- 1 root root 1017 Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RoutingCommon.py
-rw-r--r-- 1 root root  65K Apr 16 02:03 /usr/lib/python2.7/site-packages/CliPlugin/RoutingIsisCli.py
-rw-r--r-- 1 root root 115K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/RoutingOspf3Cli.py
-rw-r--r-- 1 root root 195K Apr 16 02:20 /usr/lib/python2.7/site-packages/CliPlugin/RoutingOspfCli.py
-rw-r--r-- 1 root root  23K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/RoutingRipCli.py
-rw-r--r-- 1 root root 2.4K Apr 16 03:24 /usr/lib/python2.7/site-packages/CliPlugin/RoutingSnmp.py
-rw-r--r-- 1 root root 1.2K Apr 10 18:59 /usr/lib/python2.7/site-packages/CliPlugin/SchanAccelCli.py
-rw-r--r-- 1 root root 2.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/SectionCliLib.py
-rw-r--r-- 1 root root 8.0K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/Security.py
-rw-r--r-- 1 root root 1.8K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/SendCli.py
-rw-r--r-- 1 root root  15K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/SessionCli.py
-rw-r--r-- 1 root root  29K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowCli.py
-rw-r--r-- 1 root root 1.5K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowIntfJanitor.py
-rw-r--r-- 1 root root  13K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowModel.py
-rw-r--r-- 1 root root 3.0K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ShellCli.py
-rw-r--r-- 1 root root 3.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/ShowProcesses.py
-rw-r--r-- 1 root root  625 Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/ShowRunModel.py
-rw-r--r-- 1 root root 3.2K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/ShowTechSupportCmds.py
-rw-r--r-- 1 root root 1.2K Apr 10 07:55 /usr/lib/python2.7/site-packages/CliPlugin/SmashCli.py
-rw-r--r-- 1 root root  87K Apr 16 02:01 /usr/lib/python2.7/site-packages/CliPlugin/SnmpCli.py
-rw-r--r-- 1 root root  46K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Ssh.py
-rw-r--r-- 1 root root  13K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/Ssl.py
-rw-r--r-- 1 root root 4.0K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/SslCliLib.py
-rw-r--r-- 1 root root  11K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/SslModel.py
-rw-r--r-- 1 root root 1.1K Apr 10 18:35 /usr/lib/python2.7/site-packages/CliPlugin/StartupConfigError.py
-rw-r--r-- 1 root root  22K Apr 16 01:54 /usr/lib/python2.7/site-packages/CliPlugin/StormControlCli.py
-rw-r--r-- 1 root root 6.1K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpClear.py
-rw-r--r-- 1 root root  33K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpCli.py
-rw-r--r-- 1 root root 3.1K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpCliLib.py
-rw-r--r-- 1 root root  26K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpIntfCli.py
-rw-r--r-- 1 root root 3.7K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpIntfJanitor.py
-rw-r--r-- 1 root root  46K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpModels.py
-rw-r--r-- 1 root root  57K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpShow.py
-rw-r--r-- 1 root root  14K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/SubIntfCli.py
-rw-r--r-- 1 root root 2.3K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/SupeSessionCli.py
-rw-r--r-- 1 root root 1.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/SwitchIntfCli.py
-rw-r--r-- 1 root root 1.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/SysMgrCliLib.py
-rw-r--r-- 1 root root 3.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/SysMgrModels.py
-rw-r--r-- 1 root root  18K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/TacacsCli.py
-rw-r--r-- 1 root root 4.9K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TaggedPdu.py
-rw-r--r-- 1 root root  45K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggIntfCli.py
-rw-r--r-- 1 root root  17K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggModels.py
-rw-r--r-- 1 root root  48K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapCli.py
-rw-r--r-- 1 root root 4.1K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapCliLib.py
-rw-r--r-- 1 root root 1.8K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapModel.py
-rw-r--r-- 1 root root 1.7K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapModelImpl.py
-rw-r--r-- 1 root root  22K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/TcpdumpCli.py
-rw-r--r-- 1 root root 6.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/TechSupportCli.py
-rw-r--r-- 1 root root 9.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Telnet.py
-rw-r--r-- 1 root root 2.5K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TopoModel.py
-rw-r--r-- 1 root root 4.3K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TopoShow.py
-rw-r--r-- 1 root root 6.0K Apr 10 17:48 /usr/lib/python2.7/site-packages/CliPlugin/TrackingCli.py
-rw-r--r-- 1 root root  12K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/UplinkFailureDetectionCli.py
-rw-r--r-- 1 root root 6.0K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/VersionCli.py
-rw-r--r-- 1 root root 5.5K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/VersionModel.py
-rw-r--r-- 1 root root 9.8K Apr 10 18:06 /usr/lib/python2.7/site-packages/CliPlugin/VirtualCableCli.py
-rw-r--r-- 1 root root 4.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/VirtualIntfRule.py
-rw-r--r-- 1 root root 100K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanCli.py
-rw-r--r-- 1 root root  21K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanIntfCli.py
-rw-r--r-- 1 root root 6.0K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanIntfModel.py
-rw-r--r-- 1 root root  24K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanModel.py
-rw-r--r-- 1 root root  25K Apr 16 01:50 /usr/lib/python2.7/site-packages/CliPlugin/Vm.py
-rw-r--r-- 1 root root  55K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerCli.py
-rw-r--r-- 1 root root 3.1K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerIntfCli.py
-rw-r--r-- 1 root root  19K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerModels.py
-rw-r--r-- 1 root root  79K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanCli.py
-rw-r--r-- 1 root root  26K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanControllerCli.py
-rw-r--r-- 1 root root  11K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanControllerModel.py
-rw-r--r-- 1 root root 7.9K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanIntfModel.py
-rw-r--r-- 1 root root  17K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanModel.py
-rw-r--r-- 1 root root 1.7K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanVni.py
-rw-r--r-- 1 root root 7.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/WaitForWarmupCli.py
-rw-r--r-- 1 root root  13K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/WatchCli.py
-rw-r--r-- 1 root root 8.5K Apr 16 03:50 /usr/lib/python2.7/site-packages/CliPlugin/Wbem.py
-rw-r--r-- 1 root root  21K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrCli.py
-rw-r--r-- 1 root root 3.1K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrConfigCli.py
-rw-r--r-- 1 root root  12K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrModel.py
-rw-r--r-- 1 root root  23K Apr 18 06:18 /usr/lib/python2.7/site-packages/CliPlugin/Xmpp.py
-rw-r--r-- 1 root root 4.5K Apr 18 06:18 /usr/lib/python2.7/site-packages/CliPlugin/XmppModel.py
-rw-r--r-- 1 root root 6.8K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/ZeroTouch.py
-rw-r--r-- 1 root root    0 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/__init__.py

コードの一例

[kotetsu@veos-dev site-packages]$ cat EthIntf.py
# Copyright (c) 2006-2010 Arista Networks, Inc.  All rights reserved.
# Arista Networks, Inc. Confidential and Proprietary.

"""
This is the top-level Python module for the EthIntf library. It contains some
constants related to frame sizes.
"""

from eunuchs.if_ether_h import ETH_FCS_LEN
from eunuchs.if_vlan_h  import VLAN_ETH_HLEN

MAX_SUPPORTED_FRAME_SIZE = 9236
MAX_SUPPORTED_MTU = MAX_SUPPORTED_FRAME_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN  # 9214
MAX_MGMT_MTU = 1500 # BUG5808
[kotetsu@veos-dev site-packages]$

以下は /usr/lib/python2.7/site-packages/SysdbPlugin/SysdbEthPortId.py から抜粋

      if interface in ( 'Port-Channel', 'PeerPort-Channel' ):
         # BUG4544: Further discussion is needed regarding port Id assignment
         # of channel groups.
         # Linecard numbers start at 3, so the desired port Ids for linecard
         # ports are 301 - 1500, assuming maximum of 8 cards and 150 ports per
         # card.  Starting at 100 won't conflict with physical ports until
         # there are more than 200 Port-Channels.
         baseId = 100
      elif interface == 'PeerEthernet':
         if linecard > 2:
            # Interface on a modular linecard.
            # Starting at 1501 will not conflict with physical ports on M8
            baseId = 1500 + 150 * ( linecard - 3 ) + port
         else:
            baseId = 200 + port
      elif interface == 'Management':
         if linecard == 0:
            if port == 0:
               # Management0 does not need an intf id because it is a
               # virtual interface and not used in LLDP.
               t0( "Interface", intf, "does not need a port id" )
               return 0

            # Using 97 - 99 for management interfaces on fixed
            # systems. This lower range is selected to not make
            # 'PortList' (in MIBs) big. It leaves 1 - 96 for ethernet
            # interfaces.
            baseId = 96 + port
         else:
            # On modular the first front-panel port is on a linecard,
            # so ports 1-99 are free. We will make use of 1-4.
            # Assumes only two management ports per supervisor.
            assert port in [ 1, 2 ]
            baseId = port + ( ( linecard - 1 ) * 2 )
      elif interface == 'Vxlan':
         t0( 'Vxlan interface %s' % intf )
         baseId = 2000 + port
      else:
         assert interface == 'Ethernet'
         if subPort > 0:
            # I'm assuming at most 4 subPorts per port. This is true for the
            # qsfp linecards, where we have linecard/qsfp/subport. However, if
            # we have a 100G connector, there will be more subPorts (12?).
            baseId = port * 4 + subPort
         else:
            baseId = port
         if linecard > 0:
            baseId = baseId + ( linecard * 150 )

参考

Python が入っていない NW 機器も Ansible で (一応) 制御できる (original : 2015/02/15)

この記事は某所で 2015/02/15 に書いたもののコピーです。
そのため 2017/05/13 時点ではやや古い情報も含まれています。(以下一例)

  • Ansible のバージョンが当時の 1.8 から 2.3 くらいまであがっているので、挙動が異なる部分がある筈

.

概要

本項でやること

target に python が入っていなくても ssh 接続可能ならば Ansible で一応制御できる、ということを軽く確認します。 Linux ベースではないネットワーク機器(Cisco IOS etc)などで使える筈です。

気をつけること(≒結論)

ansible:1.8.2 では、以下を満たせばいける筈です。

  • gather_factsno にすること
  • コマンド実行 module は raw を使うこと (shellcommand ではない)
  • sshcommand で target にリモートコマンド実行できること

参考情報(公式より)

何でコマンド実行 module として raw を使うのか

Ansible の config ファイルで使える ssh 系のオプション設定

環境情報

Ansible

target device (NW機器)

Python が入っていない NW 機器代表として Juniper Firefly を使いました。 FreeBSD ベースではありますが。

  • OS:12.1X47-D10.4

サンプル

設定ファイル/Playbook

hosts

実行時に --ask-pass とか使ったり、環境変数を使ったりでパスワードベタ書きは回避可能です。

[junos]
192.168.101.70

[junos:vars]
ansible_ssh_user=kotetsu
ansible_ssh_pass=kotetsu

ansible.cfg

ssh 接続に Paramiko と OpenSSH のいずれを使うか、という話がありますが…今回はオプションが豊富な OpenSSH を使っています。

[defaults]
transport=ssh

[ssh_connection]
ssh_args= -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlMaster=no -o ControlPersist=60s
scp_if_ssh=false

Playbook

単純に ssh の command で show version | no-more を実行して、結果を debug で表示させるだけです。

- name: not support Python node
  hosts: junos
  gather_facts: no
  sudo: false

  tasks:
    - name: show version
      raw: show version | no-more
      register: output_show_version

    - debug: var=output_show_version

実行例

$ ansible-playbook playbook_junos.yml -i hosts

PLAY [not support Python node] ************************************************

TASK: [show version] **********************************************************
ok: [192.168.101.70]

TASK: [debug var=output_show_version] *****************************************
ok: [192.168.101.70] => {
    "output_show_version": {
        "invocation": {
            "module_args": "show version | no-more",
            "module_name": "raw"
        },
        "rc": 0,
        "stderr": "",
        "stdout": "Could not chdir to home directory /var/home/kotetsu: No such file or directory\r\nHostname: fw01\r\nModel: firefly-perimeter\r\nJUNOS Software Release [12.1X47-D10.4]\r\n",
        "stdout_lines": [
            "Could not chdir to home directory /var/home/kotetsu: No such file or directory",
            "Hostname: fw01",
            "Model: firefly-perimeter",
            "JUNOS Software Release [12.1X47-D10.4]"
        ]
    }
}

PLAY RECAP ********************************************************************
192.168.101.70             : ok=2    changed=0    unreachable=0    failed=0

雑記

  • ssh で command exec できない機器もそれなりにある筈(手元では Yamaha RTX1200 が該当)…その場合には本方式は使えないので、自前で role を作るとか、Ansible 以外の手法(e.x. 必殺の expect)を使うとかになる筈
  • 例として Junos 使っていますが、それなら netconf を使えるので(2015/02 現在、公式が出している role は貧弱ですが)本項のようなやり方はあまりしない筈
  • 本項のやり方は、あくまで exec しているだけなので、設定投入とかは tftp サーバからファイルを copy して…的な手法になりそう

VyOS と Arista で VXLAN 相互接続 (original : 2014/12/24)

この記事は某所で 2014/12/24 に書いた記事のコピーです。
そのため 2017/05/11 時点ではやや古い情報も含まれています。

概要

また Arista ですか? いえ、これは VyOS Advent Calendar 2014 の記事です。

本項でやること

VyOS と Arista で VXLAN 相互接続します。
とはいえ、interoperability で色々痛い目にあってきた人が思うような苦難は全く無いです。
Arista と VyOS では VXLAN で使おうとする dstPort 番号が異なるのですが、VyOS の記事なので敢えて VyOS 側でこれを変えます。
# デファクトスタンダードな openvswitch ではなく、何でニッチなアレ同士で…というツッコミは不可。

前段

VXLAN とは?

VXLAN 相互接続で気にすべき点

事前の鍵交換 phase やらの面倒ごとが無いシンプルなプロトコルなので、2 台で相互接続する分には左程気をつける点は無いです。

今年の Shownet では、各メーカの箱モノで相互接続実験とかやっていて、(以下のスライド 68-75)

これを見ても気にする点は以下くらいだと分かります。

  • BUM トラフィック転送方法 (Unicast or Multicast)
  • UDP dstport 番号 (4789 or 8472)
  • VXLAN カプセリング時の 802.1q tag 取扱い (除去 or そのまま)

1 つ目は製品によってマチマチです。RFC では Multicast 実装が示されています。

2 つ目は、本項でも気にしています。draft で「IANA から UDP ポート番号割り当ててもらわないと~」と言っている時代が長かったからなのか、Linux VXLAN では 8472 が今も使われています。その内どうにかしないと、ってスタンスではあるようです。( Linux/drivers/net/vxlan.c 参照)
現在は IANA から 4789 を割り当てられているので、最近はそれを使っている・過去の経緯を考慮して dstport 変更可能な製品が多いです。

3 つ目は RFC で取り除けと言ってます↓。本項では、access VLAN しか使っていないので、見ていません。

a VTEP SHOULD NOT include an inner VLAN tag on tunnel packets

本項で取り扱う VTEP 実装

VyOS

VyOS なので基本的に Linux ベースです。
VyOS に VXLAN 取り込んだよ、って話は作者の以下資料を参照して下さい。

VXLAN の dstport に関して(の悩みどころ)はスライド 23 に書かれています。
VyOS 1.1.1 現在は普通に動かすと、dstport 8472 で動きます。

Arista

VXLAN が動かない機器群を収容して、自分が VTEP をやる Hardware VTEP です。(本項で使うのは Software 版ですが…)
デフォルトの dstport は 4789 ですが、設定で変更して既存の 8472 に歩み寄ることができます。本項ではやりませんが。
とりあえず、メーカが出している分かり易い資料は以下です。

Arista EOS 自体については、以下の本をオススメしときますね。

Arista Warrior: A Real-World Guide to Understanding Arista Switches and EOS

Arista Warrior: A Real-World Guide to Understanding Arista Switches and EOS

環境情報など

構成図/環境

以下の構成でやります。全て箱庭の仮想環境です。
赤いテナントと青いテナントを Isolation します、的な。

f:id:kakkotetsu:20170511220335j:plain

ルータは multicast routing 出来れば、何でも良いです(VyOS 1.1.1 では不可だけど実装予定には入っているみたい)。 ノードは何でも良いです。

ホスト環境

VyOS 環境 (VTEP)

  • OS:VyOS 1.1.1
  • CPU:1Core
  • Memory:256MB

Arista 環境 (VTEP)

  • Aboot-veos:Aboot-veos-2.1.0
  • OS:vEOS-4.14.2F
  • CPU:1core
  • Memory:1024MB

Firefly 環境 (ルータ)

  • OS:12.1X47-D10.4
  • CPU:2core
  • Memory:2048MB

ノード環境 (4台共)

事前準備

VyOS のデプロイ

以下を参考に作っておきます。2014/12/24 現在の最新版である 1.1.1 を使います。

Arista(vEOS) のデプロイ

以下リンクを参考に作っておきます。公式に、各種ハイパーバイザごとの導入手順詳細とかもあります。

Firefly のデプロイ~ルータモードに変更

以下リンクを参考に作っておきます。(これは VMPlayer 版ですが、各種ハイパーバイザ使えます。)

あと、デフォルトだと firewall 的な動作をして鬱陶しいので、以下を参考にルータモード(俗称)に切り替えておきます。

Ubuntu のデプロイと設定

ノードの OS は別に問わないので、好きに作って IP アドレス設定だけすれば OK です。 VLAN tag とかも食いません。

設定

VyOS の VXLAN 設定

modprobe vxlan に udp_port オプション追記

事前に Linux Kernel と VyOS バージョン確認しておきます。

kotetsu@vtep-vyos01:~$ uname -r
3.13.11-1-amd64-vyos

kotetsu@vtep-vyos01:~$ show version
Version:      VyOS 1.1.1
Description:  VyOS 1.1.1 (helium)
Copyright:    2014 VyOS maintainers and contributors
Built by:     maintainers@vyos.net
Built on:     Sun Dec  7 21:41:28 UTC 2014
Build ID:     1412072141-129950d
System type:  x86 64-bit
Boot via:     disk
Hypervisor:   VirtualBox
HW model:     VirtualBox
HW S/N:       0
HW UUID:      EF4B6725-D02A-47D3-8194-BFADF71F9987
Uptime:       23:17:43 up 22:39,  1 user,  load average: 0.01, 0.02, 0.05

VXLAN の Kernel module を modprobe する時点で dstport をデフォルトの 8472 から 4789 に変更されるように、以下ファイルを書き換えます。

kotetsu@vyos# ls -alh /opt/vyatta/share/vyatta-cfg/templates/interfaces/vxlan
total 20K
drwxr-xr-x  3 root root 4.0K Dec 23 00:53 .
drwxr-xr-x 16 root root 4.0K Dec  8 06:44 ..
-rw-r--r--  1 root root 1.1K Dec 23 00:53 node.def
-rw-r--r--  1 root root 1.1K Oct 30 17:43 node.def.orig
drwxr-xr-x 13 root root 4.0K Dec  8 06:44 node.tag

kotetsu@vyos:~$ sudo diff /opt/vyatta/share/vyatta-cfg/templates/interfaces/vxlan/node.def /opt/vyatta/share/vyatta-cfg/templates/interfaces/vxlan/node.def.orig
14c14
<   [ -d /sys/module/vxlan ] || sudo modprobe vxlan udp_port=4789
---
>   [ -d /sys/module/vxlan ] || sudo modprobe vxlan

CLI で設定

では構成図のように順次設定していきます。

set interfaces ethernet eth2 address '172.16.2.1/24'

set interfaces bridge 'br100'
set interfaces bridge 'br200'

set interfaces ethernet eth3 bridge-group bridge 'br100'
set interfaces ethernet eth4 bridge-group bridge 'br200'
set interfaces vxlan vxlan0 bridge-group bridge 'br100'
set interfaces vxlan vxlan0 group '239.0.0.1'
set interfaces vxlan vxlan0 link 'eth2'
set interfaces vxlan vxlan0 vni '10'

set interfaces vxlan vxlan1 bridge-group bridge 'br200'
set interfaces vxlan vxlan1 group '239.0.0.1'
set interfaces vxlan vxlan1 link 'eth2'
set interfaces vxlan vxlan1 vni '20'

VyOS が認識しないといけない Arista 側の VTEP IP アドレスは、Arista の Loopback アドレスになるので、StaticRoute を追加しておきます。 #これだと拡張が面倒なので、実環境では DefaultRoute か動的ルーティングを使うことが多い気がします。

set protocols static route 172.16.3.1/32 next-hop '172.16.2.254'

commitsave して設定確認しておきます。

設定確認

kotetsu@vtep-vyos01:~$ show bridge
bridge name     bridge id               STP enabled     interfaces
br100           0000.0800272ede56       no              eth3
                                                        vxlan0
br200           0000.0800276532b1       no              eth4
                                                        vxlan1
kotetsu@vtep-vyos01:~$ show interfaces vxlan
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
vxlan0           -                                 u/u
vxlan1           -                                 u/u

kotetsu@vtep-vyos01:~$ ip -d link show vxlan0
10: vxlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br100 state UNKNOWN mode DEFAULT group default
    link/ether 96:3e:2b:62:6a:57 brd ff:ff:ff:ff:ff:ff promiscuity 1
    vxlan id 10 group 239.0.0.1 dev eth2 port 32768 61000 ttl 16 ageing 300

kotetsu@vtep-vyos01:~$ ip -d link show vxlan1
15: vxlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br200 state UNKNOWN mode DEFAULT group default
    link/ether 8e:02:68:1e:d2:69 brd ff:ff:ff:ff:ff:ff promiscuity 1
    vxlan id 20 group 239.0.0.1 dev eth2 port 32768 61000 ttl 16 ageing 300

Arista(vEOS) の VXLAN 設定

設定

vlan 100,200

interface Ethernet1
   description DEV=fw01 IF=ge-0/0/2
   no switchport
   ip address 172.16.1.1/24
!
interface Ethernet2
   description DEV=node001 IF=eth2
   switchport access vlan 100
!
interface Ethernet3
   description DEV=node101 IF=eth2
   switchport access vlan 200

以下のように VXLAN インターフェースの source-interface には、Loopback Interface しか適用できません。VyOS などの dev と同じノリで物理IFを指定できるかと思いきや…。

interface Loopback0
   ip address 172.16.3.1/32
!
interface Vxlan1
   vxlan multicast-group 239.0.0.1
   vxlan source-interface Loopback0
   vxlan udp-port 4789
   vxlan vlan 100 vni 10
   vxlan vlan 200 vni 20

このままだと VTEP は 239.0.0.1 宛の通信をどこに投げればいいのか分からないので、Multicast Routing の設定をします。

ip routing
ip multicast-routing

interface Ethernet1
   ip pim sparse-mode

ip pim rp-address 172.16.1.254

ip route 172.16.2.0/24 172.16.1.254

設定確認

vtep-arista01#show interfaces vxlan 1
Vxlan1 is up, line protocol is up (connected)
  Hardware is Vxlan
  Source interface is Loopback0 and is active with 172.16.3.1
  Replication/Flood Mode is multicast
  Static vlan to vni mapping is
    [100, 10]         [200, 20]
  Multicast group address is 239.0.0.1


vtep-arista01#show vxlan vtep
Remote vteps for Vxlan1:
Total number of remote vteps:  0


vtep-arista01#show vxlan counters software
Rx bytes for encapsulation                      :  0
Rx pkts for encapsulation                       :  0
Encaped bytes                                   :  0
Encaped packets                                 :  0
Tx bytes after encapsulation                    :  0
Tx pkts after encapsulation                     :  0
Rx dot1Q Tunnel pkts for encapsulation          :  0
Rx bytes after decapsulation                    :  0
Rx pkts after decapsulation                     :  0
Decaped bytes                                   :  0
Decaped packets                                 :  0
ARP bytes                                       :  0
ARP packets                                     :  0

Read error for pkts coming in for encapsulation :  0
Discarded runt pkts ( encap side )              :  0
Discard vlan range ( encap eide )               :  0
Discard vlan map ( encap side )                 :  0
Discard mlag peer link ( encap side )           :  0
Discarded pkts due to empty flood list          :  0
Encap send error                                :  0
Encap timeout                                   :  0
Discarded runt pkts ( decap side )              :  0
Discard pkts not for vtep ( decap side )        :  0
Discard bytes not for vtep ( decap side )       :  0
Discard pkts with invalid vxlan header          :  0
Discard vlan map ( decap side )                 :  0
Discard VNI range ( decap side )                :  0
Decap timeout                                   :  0
Decap socket error                              :  0
ARP send error                                  :  0


vtep-arista01#show vxlan address-table
          Vxlan Mac Address Table
----------------------------------------------------------------------

Vlan  Mac Address     Type     Prt  Vtep             Moves   Last Move
----  -----------     ----     ---  ----             -----   ---------
Total Remote Mac Addresses for this criterion: 0

vtep-arista01#show vxlan counters varp
arp cache installed:                    0
vxlan encapsulated arps:                0
arp reply to vArp mac and vArp vtep:    0
arp reply RX:                           0
arp reply head-end-replicated:          0
arp reply TX:                           0
arp request decaped and sent:           0

arp cache install err                   0
arp request decap and send TX err:      0
unknown cpu port id:                    0
packet too short:                       0
unexpected ether type:                  0
unexpected non IP packet                0
unexpected IP prot                      0
unexpected UPD port                     0
unexpected inner packet                 0
unexpected arp reply                    0
invalid IP checksum                     0
invalid Vxlan header                    0
invalid arp packet                      0
unknown vlan to vni mapping             0
unknown source IP                       0
no BUM flood list TX err                0
arp reply to Arp agent TX err           0

Firefly の multicast routing 設定

設定

VXLAN の RFC には dense より bidirectional PIM が効果的かもね、と書いてあります。 ガン無視して、ここは簡単な dense 設定でいきます。

set interfaces ge-0/0/2 unit 0 family inet address 172.16.1.254/24
set interfaces ge-0/0/3 unit 0 family inet address 172.16.2.254/24

set routing-options static route 172.16.3.1/32 next-hop 172.16.1.1

set protocols pim interface ge-0/0/2.0 mode dense
set protocols pim interface ge-0/0/3.0 mode dense

動作確認

疎通

赤 node 同士、青 node 同士が疎通可能なことを確認します。 この時、VyOS や Arista で tcpdump かけておき後で確認します。 # 疎通したは良いが、異様に RTT がでかい…。firefly と Arista 間もそんな感じで、ショボいマシンでArista 動かしている所為かも。

$ ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=72.9 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=67.2 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=63.2 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=163 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=75.7 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=67.2 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=68.8 ms
64 bytes from 10.0.0.2: icmp_seq=8 ttl=64 time=73.7 ms
64 bytes from 10.0.0.2: icmp_seq=9 ttl=64 time=55.3 ms
64 bytes from 10.0.0.2: icmp_seq=10 ttl=64 time=102 ms
64 bytes from 10.0.0.2: icmp_seq=11 ttl=64 time=38.5 ms
64 bytes from 10.0.0.2: icmp_seq=12 ttl=64 time=33.0 ms
64 bytes from 10.0.0.2: icmp_seq=13 ttl=64 time=35.1 ms
64 bytes from 10.0.0.2: icmp_seq=14 ttl=64 time=31.7 ms
~$ ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=70.6 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=62.5 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=100 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=38.6 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=35.3 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=30.0 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=34.4 ms
64 bytes from 10.0.0.2: icmp_seq=8 ttl=64 time=26.1 ms
64 bytes from 10.0.0.2: icmp_seq=9 ttl=64 time=29.9 ms
64 bytes from 10.0.0.2: icmp_seq=10 ttl=64 time=28.7 ms
64 bytes from 10.0.0.2: icmp_seq=11 ttl=64 time=25.9 ms
64 bytes from 10.0.0.2: icmp_seq=12 ttl=64 time=24.8 ms
64 bytes from 10.0.0.2: icmp_seq=13 ttl=64 time=24.4 ms
$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=24.3 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=25.9 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=28.5 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=24.7 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=64 time=26.2 ms
64 bytes from 10.0.0.1: icmp_seq=6 ttl=64 time=59.4 ms
64 bytes from 10.0.0.1: icmp_seq=7 ttl=64 time=29.0 ms
64 bytes from 10.0.0.1: icmp_seq=8 ttl=64 time=26.9 ms
64 bytes from 10.0.0.1: icmp_seq=9 ttl=64 time=72.5 ms
64 bytes from 10.0.0.1: icmp_seq=10 ttl=64 time=55.1 ms
64 bytes from 10.0.0.1: icmp_seq=11 ttl=64 time=49.7 ms
64 bytes from 10.0.0.1: icmp_seq=12 ttl=64 time=92.5 ms
64 bytes from 10.0.0.1: icmp_seq=13 ttl=64 time=45.3 ms
64 bytes from 10.0.0.1: icmp_seq=14 ttl=64 time=41.3 ms
64 bytes from 10.0.0.1: icmp_seq=15 ttl=64 time=37.7 ms
64 bytes from 10.0.0.1: icmp_seq=16 ttl=64 time=36.7 ms
64 bytes from 10.0.0.1: icmp_seq=17 ttl=64 time=35.3 ms
$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=26.2 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=23.4 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=28.3 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=73.0 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=64 time=65.0 ms
64 bytes from 10.0.0.1: icmp_seq=6 ttl=64 time=62.3 ms
64 bytes from 10.0.0.1: icmp_seq=7 ttl=64 time=112 ms
64 bytes from 10.0.0.1: icmp_seq=8 ttl=64 time=45.6 ms
64 bytes from 10.0.0.1: icmp_seq=9 ttl=64 time=38.3 ms
64 bytes from 10.0.0.1: icmp_seq=10 ttl=64 time=35.6 ms
64 bytes from 10.0.0.1: icmp_seq=11 ttl=64 time=34.9 ms
64 bytes from 10.0.0.1: icmp_seq=12 ttl=64 time=40.1 ms
64 bytes from 10.0.0.1: icmp_seq=13 ttl=64 time=38.3 ms

VTEP状態確認

kotetsu@vtep-vyos01:~$ show interfaces vxlan detail
vxlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br100 state UNKNOWN group default
    link/ether fe:61:bc:ca:cd:1d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc61:bcff:feca:cd1d/64 scope link
       valid_lft forever preferred_lft forever

    RX:  bytes    packets     errors    dropped    overrun      mcast
        117556       1480          0          0          0          0
    TX:  bytes    packets     errors    dropped    carrier collisions
        383710       4382          0          0          0          0
vxlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master br200 state UNKNOWN group default
    link/ether b2:02:ef:4e:26:d4 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::b002:efff:fe4e:26d4/64 scope link
       valid_lft forever preferred_lft forever

    RX:  bytes    packets     errors    dropped    overrun      mcast
        232330       3109          0          0          0          0
    TX:  bytes    packets     errors    dropped    carrier collisions
        490658       5270          0          0          0          0
vtep-arista01#show vxlan vtep
Remote vteps for Vxlan1:
172.16.2.1
Total number of remote vteps:  1



vtep-arista01#show mac address-table
          Mac Address Table
------------------------------------------------------------------

Vlan    Mac Address       Type        Ports      Moves   Last Move
----    -----------       ----        -----      -----   ---------
 100    0800.272d.daa2    DYNAMIC     Vx1        1       0:14:19 ago
 100    0800.27a6.f13d    DYNAMIC     Et2        1       0:14:22 ago
 200    0800.272c.080f    DYNAMIC     Et3        1       0:11:05 ago
 200    0800.27a9.6b58    DYNAMIC     Vx1        1       0:10:33 ago
Total Mac Addresses for this criterion: 4

          Multicast Mac Address Table
------------------------------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       ----        -----
Total Mac Addresses for this criterion: 0


vtep-arista01#show vxlan address-table
          Vxlan Mac Address Table
----------------------------------------------------------------------

Vlan  Mac Address     Type     Prt  Vtep             Moves   Last Move
----  -----------     ----     ---  ----             -----   ---------
 100  0800.272d.daa2  DYNAMIC  Vx1  172.16.2.1       1       0:14:15 ago
 200  0800.27a9.6b58  DYNAMIC  Vx1  172.16.2.1       1       0:10:28 ago
Total Remote Mac Addresses for this criterion: 2

vtep-arista01#show vxlan counters software
Rx bytes for encapsulation                      :  249372
Rx pkts for encapsulation                       :  2390
Encaped bytes                                   :  249372
Encaped packets                                 :  2390
Tx bytes after encapsulation                    :  306732
Tx pkts after encapsulation                     :  2390
Rx dot1Q Tunnel pkts for encapsulation          :  0
Rx bytes after decapsulation                    :  79320
Rx pkts after decapsulation                     :  733
Decaped bytes                                   :  23664
Decaped packets                                 :  348
ARP bytes                                       :  0
ARP packets                                     :  0

Read error for pkts coming in for encapsulation :  0
Discarded runt pkts ( encap side )              :  0
Discard vlan range ( encap eide )               :  0
Discard vlan map ( encap side )                 :  0
Discard mlag peer link ( encap side )           :  0
Discarded pkts due to empty flood list          :  0
Encap send error                                :  0
Encap timeout                                   :  0
Discarded runt pkts ( decap side )              :  1
Discard pkts not for vtep ( decap side )        :  384
Discard bytes not for vtep ( decap side )       :  40980
Discard pkts with invalid vxlan header          :  0
Discard vlan map ( decap side )                 :  0
Discard VNI range ( decap side )                :  0
Decap timeout                                   :  0
Decap socket error                              :  0
ARP send error                                  :  0
vtep-arista01#


vtep-arista01#show vxlan counters varp
arp cache installed:                    0
vxlan encapsulated arps:                2
arp reply to vArp mac and vArp vtep:    0
arp reply RX:                           0
arp reply head-end-replicated:          0
arp reply TX:                           0
arp request decaped and sent:           2

arp cache install err                   0
arp request decap and send TX err:      0
unknown cpu port id:                    0
packet too short:                       0
unexpected ether type:                  0
unexpected non IP packet                0
unexpected IP prot                      0
unexpected UPD port                     0
unexpected inner packet                 0
unexpected arp reply                    0
invalid IP checksum                     0
invalid Vxlan header                    0
invalid arp packet                      0
unknown vlan to vni mapping             0
unknown source IP                       0
no BUM flood list TX err                0
arp reply to Arp agent TX err           0

パケットキャプチャ

特徴的なものをいくつか画面キャプチャで貼っていきます。

↓ node からの BUM トラフィック(ping 実行時最初の ARP)は、設定したマルチキャストアドレスで。

f:id:kakkotetsu:20170511220409j:plain

↓ VNI10 側。VTEP 間のユニキャストにカプセリングされているのがよく分かる。また、指定どおり UDP dstport 4789 で動作している。

f:id:kakkotetsu:20170511220421j:plain

f:id:kakkotetsu:20170511220432j:plain

↓VNI20 側も一緒。

f:id:kakkotetsu:20170511220443j:plain

おしまい

雑感

  • このように利用する UDP dstport が異なるような VTEP 間でも、それさえ揃えてしまえば相互接続もチョロいものです。
  • まあ、普通は設定一発で UDP dstport を変更できるやつ(今回のケースでいうと Arista 側)で変更すると思います。今回 VyOS でやったのはただの興味本位です。
  • VyOS を VTEP として使うユースケースがまだ見えてきません。ハイパーバイザ1台に1インスタンスバラまくとか?
  • マルチキャストルーティングを勉強しよう。