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 と SNMP を ruby で操作して、手っ取り早く NW 機器の構成情報を取得~ JSON 形式で吐き出す
- 上記ファイルを構成情報マスタとみなして、Ansible の dynamic inventory と連携する
モチベーション
- 仮想マシンの構成管理ソフトは割とあるけれど、物理含めた NW 機器も統合的に…となると選択肢は少ない…
- Nmap の fingerprint (OS検出)みたいなことも NW 機器相手に高精度でやりたい
- 色々なミドルウェアで hosts ファイル的な異なるフォーマットの設定ファイルを求めてくるが、手っ取り早く生成したい
- 大袈裟な仕組みは使いたくない
- 2015/11/19 に Nmap 7.0 がリリースされたので使わなきゃ(使命感)
前段
Nmap
言わずと知れた OSS ツールで、以下のような機能があります。超優れもの!
- Host Discovery | 公式
- 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 のオプション群を分かりやすい表現で書ける
- CLI オプションとのマッピングは ruby-nmap/lib/nmap/task.rb を見るのが手っ取り早い
- Host Discovery で生成された xml をパース
- xml のパースを自前でやらなくて済むってだけで、嬉しくないですか。僕は嬉しい。
公式の Examples を見ると一目瞭然でしょう。
Ruby SNMP
SNMP を扱える ruby 版ライブラリです。(雑)
割と日本語記事も多いし、メジャーなやつでしょう。
Ansible Dynamic Inventory
- Dynamic Inventory | Ansible Documentation
- 公式ドキュメント
- ansible/contrib/inventory | github
- Ansible 本体に付属してくるサンプルスクリプト群(以下は例)
- OpenStack
- Zabbix
- Proxmox
- Amazon EC2
- VMware
- ssh_config
- etc etc
- Ansible 本体に付属してくるサンプルスクリプト群(以下は例)
- Ansible meetuptokyo 2015 Dynamic Inventory | SlideShare
- プロの Ansibler による分かり易い解説資料
他の場所に構成管理マスタがあり、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-nmap
は xml を扱う関係上、依存関係に 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 つのファイルを配置します。
- スクリプト本体 (discovery_nwdevs.rb)
- スクリプトの設定ファイル(setting_discovery_nwdevs.yml)
- Nmap input file (target_nw.txt)
スクリプト本体
ruby-nmap
と Ruby 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.json
が root: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
のみ名前登録してあった)は xml のhostname
をptr
に格納 sysname
とsysdesc
とsyslocation
は SNMP 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 専用の Playbookhosts
では先の./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 ファイルをロードして
sysDescr
をcase
で分けて、機種に応じた処理- 詳細な inventory 情報取得(シリアル番号とかラインカード/SFP構成とか)
- config 取得 (後述の rancid 方式でもよい)
- discovery ~ config 取得 ~ バージョン管理コマンドも cron で回しておくと、増えた機器が勝手にバックアップ・バージョン管理される
- 各種ミドルウェアの設定ファイル生成(サンプルスクリプトのアウトプットを JSON でなく、設定ファイル形式にするでも)
- rancid
- Ansible
- hosts ファイル
- Dynamic Inventory と連携
- 本項で軽くやったやつ
- 監視ソフト(auto discovery 的な機能がない)
- 機種に応じた自前の plugin を指定して…とかも自動でやれる
- 特定バージョンを対象とした
- OS ファイル転送
- 設定撒き
ptr
が空でsysname
を取得できたものに関して、内部 DNS コンテンツの設定生成(~追加)sysDesc
とsysname
の組み合わせで条件付けて、待機系機器のみ云々
- JSON ファイルに書き出した情報を SQL に放り込んで、WebUI なり API なりを提供
- 前述の内容を実現するのに、踏み台サーバや監視サーバからも inventory 情報を取得したい、って思ったり
- 別に rsync とかで撒いてもよいが
- 実機から取得できる情報には限界があるし、人間が入力・更新したい情報もあるのでは(商用環境だと保守期限とか)
- ありもの製品の WebUI は実運用要件を充たすようにカスタマイズできないから、自前で簡易で運用要件を充たすものを立てたほうが楽、とか
- そういう思いから自前で作り込まれた社内システムとかには、文句たらたらで「ありもののパッケージ使えよ」とか言うのにね
- 前述の内容を実現するのに、踏み台サーバや監視サーバからも inventory 情報を取得したい、って思ったり
所感
- まあ、なんというか「何をマスタ情報にして、他コンポーネントとどういう連携をするか」は環境次第なので、こんな方法もあるよ、ってだけですな
- 超メジャーな Nmap を使った Inventory の生成、なんてのは割とポピュラーな手法で、以下のようなものを使えば同じこと+アルファが出来ます(いずれも内部的には Nmap を使っている模様)
- Open-AudIT
- JSON, xlsx, pdf 形式などで情報をエクスポートできるらしい
- 本項の Discovery レベルの話は全部できそう
- ローレベルディスカバリ | Zabbix 2.2
- SNMP 連携できるディスカバリって点では、物理 NW 機器を一元管理する場合には、これがマッチする気がする
- Open-AudIT
- ただまあ、もっと手軽に…とか、アウトプットの書式を任意に作りたい(他のミドルウェアで使う設定ファイル生成とか)とかのケースでは、使えるのではないでしょうかね
- 生で Nmap 叩いて xml をサクッとパースすればライブラリさえ使う必要ないのですが…
- Nmap 7.0 の新機能を一切触ってないじゃねぇか!
Juniper vSRX(15.1X) を VirtualBox で動かす (original : 2015/12/11)
この記事は某所で 2015/12/11
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。
- Juniper さんの vSRX ダウンロード規約が変わっていそう (詳細は未確認)
.
概要
本項でやること
- KVM、VMware ESX 向けの 60 日間 trial 版が公開されている Juniper vSRX を VirtualBox に入れる
- 公式にはサポートされない手順なので、自己責任で
- JUNOS の基本的な操作は省略(ある程度知っている人向け)
環境情報
- ホスト: Windows7 + VirtualBox 4.3.18
- Juniper vSRX: JUNOS 15.1X49-D15.4
vSRX?
- Juniper SRX の 仮想版
- 以前は Firefly Perimeter として公開されていた
- DPDK 対応などの機能強化を果たして、ほぼ別物として名前も Firefly から vSRX になった
- 参考 2014年03月時点での Firefly Perimeter ロードマップなど
- version が 12.1X となっているものは Firefly で 15.1X となっているものは vSRX
- だが、最近は旧 Firefly も vSRX と呼ばれていたりして、ややこしい
手順
vSRX イメージファイル取得
- Trial 版ダウンロードページ | Juniper または ダウンロードページ | Juniper にアクセス
vSRX VMware Appliance with IDE virtual disk
を選択してmedia-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova
をダウンロード2015/11/23
現在の最新版
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 ファイルを指定
- 以降の画面キャプチャはインポート後の設定からとってきたもの
- どうやら
アダプタータイプ
は一回起動したあとは勝手に準仮想化ネットワーク(virtio-net)
にされるようだ アダプター 1
が JUNOS 側から見るとfxp0
(管理用ポート)になる
コンソール画面から初期設定
- 起動する
- 無事に起動できたら、コンソールログインして以下を設定する
# 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 各種パッケージインストール
必要なパッケージをインストール
- reauirements.txt を参照
OS パッケージで入れる例
$ sudo apt-get install python-daemon python-bottle python-netaddr python-pip
bagpipe-bgp インストール
- 公式の Installation に従う
$ 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 インストール
- 公式 Getting Started に従いインストール
$ 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
- gobgp Getting started に従いインストール
$ 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
各種コマンドで状態確認可能- 以下公式のドキュメント
$ 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 の読んでおきたいコードをメインに、ディレクトリ構造を追いました。本項単体では何も得られない僕向けの内容です。マニュアルで得られない情報をコードやコメントから読み取るのって、楽しいんですよね(死んだ魚の目)。
以下のようなことをやるための前戯の意味もあります。
- 自分だけの CLI コマンドを実装( Understanding EOS CLI implementation 参照)
- EOS を介さずに sysdb を直接突く (後述)
- RPM をインストールして EOS の extension として動かして機能拡張( Packaging and installing EOS extensions 参照)
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
- 作者: Gary A. Donahue
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/10/27
- メディア: ペーパーバック
- この商品を含むブログを見る
環境
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_facts
はno
にすること- コマンド実行 module は
raw
を使うこと (shell
やcommand
ではない) ssh
のcommand
で 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
雑記
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
- 作者: Gary A. Donahue
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/10/27
- メディア: ペーパーバック
- この商品を含むブログを見る
環境情報など
構成図/環境
以下の構成でやります。全て箱庭の仮想環境です。
赤いテナントと青いテナントを Isolation します、的な。
ルータは multicast routing 出来れば、何でも良いです(VyOS 1.1.1 では不可だけど実装予定には入っているみたい)。 ノードは何でも良いです。
ホスト環境
- ホスト:Windows7 + VirtualBox 4.3.18
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'
commit
~ save
して設定確認しておきます。
設定確認
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)は、設定したマルチキャストアドレスで。
↓ VNI10 側。VTEP 間のユニキャストにカプセリングされているのがよく分かる。また、指定どおり UDP dstport 4789 で動作している。
↓VNI20 側も一緒。