kakkotetsu

vQFX10000 を KVM+GNS3 で動かす (original : 2017/01/02)

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

  • Juniper さんの vQFX ダウンロード規約が変わっていそう (詳細は未確認)
  • 201705 に GNS3 ver2.0 stable が出た

.

最初に

個人メール/名義で Juniper vQFX10000 trial 版 のダウンロード権限申請をしたら、ちょっとしたメールのやりとりの後に権限を頂けました。
Juniper さんへの感謝を込めて、幾つか記事を投稿しておきます。

本項でやること

  • Juniper QFX10000 シリーズの仮想版であるところの Juniper vQFX10000 を KVM+GNS3 で動かして、簡単な L2 疎通確認をするところまで
  • 公式サイトで案内されている Installation Guide (Juniper 公式 gitbuh | Juniper/vqfx10k-vagrant) では vagrant でのインストール手順のみが公開されている(2016/12/22現在)が、OSイメージとしては vmdk 版も配布されているし(&自分のメイン環境が KVM なので)、という都合
  • KVM や GNS3 の導入手順、Junos 操作の基礎は省略 (ある程度知っている人向け)

Juniper vQFX?

  • Juniper QFX10000 シリーズの仮想版(trial)
  • 少なくとも 2016/07 時点では「github 上に Installation Guide はあがっているけれど、OSイメージは公開されていない」という状況だった
    • 2016/12現在、いつのまにか Free Trial が始まっていたことに気付いた
    • そして上記の Installation Guide が公式なものになっている
  • 例によって、ダウンロードするためには権限申請が必要
    • 今回も個人アカウントで申請したのですが Juniper の方とちょっとしたメールのやりとりで承認して頂けました。本当にありがとうございます。

環境情報

軽く

  • KVM 母艦
    • Ubuntu16.04.1-server-amd64
    • apt で降ってくる KVM と GNS3 一式
  • vQFX10000
    • PFE も RE も 2016/12/22 時点で trial ダウンロード可能な最新版
      • PFE は vqfx10k-pfe-20160609-2.vmdk
      • RE は vqfx10k-re-15.1X53-D60.vmdk
$ uname -a
Linux vkvm02 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"

$ virsh -v
1.3.1

$ qemu-system-x86_64 --version
QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.6), Copyright (c) 2003-2008 Fabrice Bellard

$ gns3 --version
1.5.2

Install 手順

KVM 一式や GNS3 は以下あたりを参考に導入済みであること。(雑)

vQFX イメージファイル入手 ~ 配置 ~ format 変換

イメージファイル入手~KVM母艦に配置

  1. 前述の公式から飛べる vQFX Evaluation - Download Software
  2. 2016/12/22 現在ダウンロード可能な最新版一式(今回は Formatvmdk の 2 ファイルのみで OK)をダウンロード
    • VQFX10K PFE Disk Image
    • VQFX10K RE Disk Image
  3. KVM母艦に配置
$ md5sum vm_images/vqfx10k-pfe-20160609-2.vmdk
faa6905fd8e935c6e97859191143e8c3  vm_images/vqfx10k-pfe-20160609-2.vmdk
$ cat vm_images/vqfx10k-pfe-20160609-2_md5.txt
faa6905fd8e935c6e97859191143e8c3

$ md5sum vm_images/vqfx10k-re-15.1X53-D60.vmdk
758669e88213fbd7943f5da7f6d7bd59  vm_images/vqfx10k-re-15.1X53-D60.vmdk
$ cat vm_images/vqfx10k-re-15.1X53-D60_md5.txt
758669e88213fbd7943f5da7f6d7bd59

vmdk を qcow2 に format 変換

いつも通り

$ cd ~/vm_images/
$ mkdir qemu
$ ls -al
total 917640
drwxrwxr-x  3 kotetsu kotetsu      4096 Dec 25 11:32 .
drwxr-xr-x 12 kotetsu kotetsu      4096 Dec 25 11:08 ..
drwxrwxr-x  2 kotetsu kotetsu      4096 Dec 25 11:32 qemu
-rw-r--r--  1 kotetsu kotetsu        32 Dec 24 10:59 vqfx10k-pfe-20160609-2_md5.txt
-rw-r--r--  1 kotetsu kotetsu 584086528 Dec 24 10:42 vqfx10k-pfe-20160609-2.vmdk
-rw-r--r--  1 kotetsu kotetsu        32 Dec 24 11:00 vqfx10k-re-15.1X53-D60_md5.txt
-rw-r--r--  1 kotetsu kotetsu 355542528 Dec 24 10:50 vqfx10k-re-15.1X53-D60.vmdk

$ qemu-img convert -f vmdk -O qcow2 vqfx10k-pfe-20160609-2.vmdk qemu/vqfx10k-pfe-20160609-2.qcow2
$ qemu-img convert -f vmdk -O qcow2 vqfx10k-re-15.1X53-D60.vmdk qemu/vqfx10k-re-15.1X53-D60.qcow2

$ ls -al qemu/
total 1585044
drwxrwxr-x 2 kotetsu kotetsu       4096 Dec 25 11:37 .
drwxrwxr-x 3 kotetsu kotetsu       4096 Dec 25 11:32 ..
-rw-r--r-- 1 kotetsu kotetsu 1144782848 Dec 25 11:37 vqfx10k-pfe-20160609-2.qcow2
-rw-r--r-- 1 kotetsu kotetsu  478412800 Dec 25 11:37 vqfx10k-re-15.1X53-D60.qcow2

GNS3 上でテンプレートイメージとして登録

ここは、各人が使っている KVM 管理ソフトウェアに読み替えて下さい。 CPU/Memory の要件は、前述の Installation Guide に書いてあります。

PFE

以下でとりあえず(自分の検証用途では問題なく)動いてます。

f:id:kakkotetsu:20170511222203p:plain

RE

以下でとりあえず(自分の検証用途では問題なく)動いてます。 ここの Adapters 数は、最低 2 個必要で 4 個目からが xe-0/0/0~マッピングされます。上限数はちゃんと確認していないものの、6 個しか割り当てなくても固定で xe-0/0/11 まで見えるし、12個の筈。

f:id:kakkotetsu:20170511222238p:plain

GNS3 でテンプレートからデプロイ ~ 結線 ~ 起動

登録したテンプレートから PFE と RE を 1 セットドラッグアンドドロップでデプロイします。 一応、ついでに適当な疎通確認用のノードも 2 個くらい作っておきました。

結線時、各仮想マシンの外から見える Adapters のカウントと OS 内のインターフェース対応は以下の感じです。PFE の 2 個目と RE の 2 個目を接続しておけば、最低限 PFE を認識するところまでは動きます。

コンポーネント 外から見えるインターフェース番号(GNS3 デフォルト名) OSでの使われ方 備考
PFE 1 (Ethernet0) eth0 初期設定で DHCP になっている管理インターフェースなので、必要に応じて外界と接続
PFE 2 (Ethernet1) eth1 (169.254.0.1/24) RE との Dedicated Link
RE 1 (Ethernet0) em0 初期設定で DHCP になっている管理インターフェースなので、必要に応じて外界と接続したり固定アドレスに変更したり
RE 2 (Ethernet1) em1 (169.254.0.2/24) PFE との Dedicated Link
RE 3 (Ethernet2) 不明 使ったことないけどたぶん em2 かと
RE 4~ (Ethernet3~) xe-0/0/0~

というわけで、例えば以下の感じで。

f:id:kakkotetsu:20170511222305p:plain

絵でいうところの SW1Cloud というやつは外界 (母艦KVMlinux bridge へ)に接続して、既存環境と相互通信(管理用)させています。その辺はまあ、環境に合わせて。

余談ですが、GNS3 1.5.2 では github gns3-gui issues | QEMU link Packet Captures の通り qemu 同士の結線ではパケットキャプチャできないので、複数デプロイして RE 同士を接続する場合には、間に GNS3 の Ethernet Switch を挟んだり、vQFX 側で port mirroring したりとかの工夫をすることになるかと思います。(ということで GNS3 2.0 stable 以降を使おう!)

あとは RE と PFE を GNS3 から Start してしばらく待ちます。 RE が起動してから結構待つと、PFE と勝手に繋がって PFE が見えるようになります。気長に待ちましょう。

~$ ps aux | grep [Q]FX
root      4819 56.8  7.0 1907744 1165860 pts/10 Sl+ Dec25  63:24 /usr/bin/qemu-system-x86_64 -name vQFX_RE_15.1X53-D60-1 -m 1024M -smp cpus=1 -enable-kvm -boot order=c -drive file=/home/kotetsu/GNS3/projects/vqfx/project-files/qemu/f8b3330f-b59c-4035-970e-77368631a1f5/hda_disk.qcow2,if=ide,index=0,media=disk -serial telnet:127.0.0.1:5001,server,nowait -monitor tcp:127.0.0.1:55276,server,nowait -net none -device e1000,mac=00:86:2b:a1:f5:00,netdev=gns3-0 -netdev socket,id=gns3-0,udp=127.0.0.1:10011,localaddr=127.0.0.1:10010 -device e1000,mac=00:86:2b:a1:f5:01,netdev=gns3-1 -netdev socket,id=gns3-1,udp=127.0.0.1:10000,localaddr=127.0.0.1:10005 -device e1000,mac=00:86:2b:a1:f5:02 -device e1000,mac=00:86:2b:a1:f5:03 -device e1000,mac=00:86:2b:a1:f5:04,netdev=gns3-4 -netdev socket,id=gns3-4,udp=127.0.0.1:10004,localaddr=127.0.0.1:10003 -device e1000,mac=00:86:2b:a1:f5:05,netdev=gns3-5 -netdev socket,id=gns3-5,udp=127.0.0.1:10002,localaddr=127.0.0.1:10001 -nographic

root      4826 99.3  9.3 2468864 1533164 pts/10 Sl+ Dec25 110:45 /usr/bin/qemu-system-x86_64 -name vQFX_PFE_20160609-1 -m 1536M -smp cpus=1 -enable-kvm -boot order=c -drive file=/home/kotetsu/GNS3/projects/vqfx/project-files/qemu/21773ec6-55f8-4c3f-9cfb-fedd5f0f38da/hda_disk.qcow2,if=ide,index=0,media=disk -serial telnet:127.0.0.1:5000,server,nowait -monitor tcp:127.0.0.1:44622,server,nowait -net none -device e1000,mac=00:86:2b:38:da:00 -device e1000,mac=00:86:2b:38:da:01,netdev=gns3-1 -netdev socket,id=gns3-1,udp=127.0.0.1:10005,localaddr=127.0.0.1:10000 -nographic

Junos 側の確認

RE 確認

Juniper 公式 gitbuh | Juniper/vqfx10k-vagrant にも書いてありますが、アカウント: root パスワード: Juniper でログインしたら、いつも通り cli コマンドで JUNOS shell へ入ります。

基本情報を確認... QFX3500 とか書いてある...けど、本質ではないので無視。

{master:0}
root@vqfx-re> show chassis hardware
Hardware inventory:
Item             Version  Part number  Serial number     Description
Chassis                                84425636318       QFX3500


{master:0}
root@vqfx-re> show version
fpc0:
--------------------------------------------------------------------------
Hostname: vqfx-re
Model: vqfx-10000
Junos: 15.1X53-D60.4
JUNOS Base OS boot [15.1X53-D60.4]
JUNOS Base OS Software Suite [15.1X53-D60.4]
JUNOS Crypto Software Suite [15.1X53-D60.4]
JUNOS Online Documentation [15.1X53-D60.4]
JUNOS Kernel Software Suite [15.1X53-D60.4]
JUNOS Packet Forwarding Engine Support (qfx-10-f) [15.1X53-D60.4]
JUNOS Routing Software Suite [15.1X53-D60.4]
JUNOS Enterprise Software Suite [15.1X53-D60.4]
JUNOS Web Management [15.1X53-D60.4]
JUNOS py-base-i386 [15.1X53-D60.4]


{master:0}
root@vqfx-re> show system license
License usage: none

Licenses installed: none
root@vqfx-re:RE:0% uname -a
JUNOS vqfx-re 15.1X53-D60.4 JUNOS 15.1X53-D60.4 #0: 2016-08-26 23:07:01 UTC     builder@mayland.juniper.net:/volume/build/junos/15.1/service/15.1X53-D60.4/obj/i386/junos/bsd/kernels/JUNIPER-QFX/kernel  i386

root@vqfx-re:RE:0% python --version
Python 2.7.8

PFE とつながって、認識されたことを確認。

{master:0}
root@vqfx-re> show pfe terse
fpc0:
--------------------------------------------------------------------------
Slot Type Slot      State     Uptime
 0   FXPC Present   Online    01:23:47


{master:0}
root@vqfx-re> show chassis fpc
                     Temp  CPU Utilization (%)   CPU Utilization (%)  Memory    Utilization (%)
Slot State            (C)  Total  Interrupt      1min   5min   15min  DRAM (MB) Heap     Buffer
  0  Online           Testing  17        12        0      0      0    1024        0         66
  1  Empty
  2  Empty
  3  Empty
  4  Empty
  5  Empty
  6  Empty
  7  Empty
  8  Empty
  9  Empty


{master:0}
root@vqfx-re> show interfaces em1
Physical interface: em1    , Enabled, Physical link is Up
  Interface index: 9, SNMP ifIndex: 23
  Type: Ethernet, Link-level type: Ethernet, MTU: 1514, Speed: 1000mbps
  Device flags   : Present Running
  Interface flags: SNMP-Traps
  Link type      : Full-Duplex
  Current address: 00:86:2b:a1:f5:01, Hardware address: 00:86:2b:a1:f5:01
  Last flapped   : 2016-12-25 13:21:12 UTC (01:25:04 ago)
    Input packets : 614505
    Output packets: 957499

  Logical interface em1.0 (Index 6) (SNMP ifIndex 24)
    Flags: Up SNMP-Traps 0x4000000 Encapsulation: ENET2
    Input packets : 614547
    Output packets: 957499
    Protocol inet, MTU: 1500
      Flags: Sendbcast-pkt-to-re
      Addresses, Flags: Is-Preferred Is-Primary
        Destination: 169.254.0/24, Local: 169.254.0.2, Broadcast: 169.254.0.255


{master:0}
root@vqfx-re> show arp
MAC Address       Address         Name                      Interface               Flags
52:54:00:07:30:c0 10.0.0.65       10.0.0.65                 em0.0                   none
00:a0:de:c0:55:80 10.0.0.254      10.0.0.254                em0.0                   none
00:86:2b:38:da:01 169.254.0.1     169.254.0.1               em1.0                   none
Total entries: 3

当該 RE 仮想マシンに割り当てた Adapters は 6 個だけでしたが、固定で xe-0/0/0xe-0/0/11 まで出来てますねえ...しかも何故か全て Linkup 状態

{master:0}
root@vqfx-re> show interfaces terse
Interface               Admin Link Proto    Local                 Remote
gr-0/0/0                up    up
pfe-0/0/0               up    up
pfe-0/0/0.16383         up    up   inet
                                   inet6
pfh-0/0/0               up    up
pfh-0/0/0.16383         up    up   inet
pfh-0/0/0.16384         up    up   inet
xe-0/0/0                up    up
xe-0/0/0.0              up    up   inet
xe-0/0/1                up    up
xe-0/0/1.0              up    up   eth-switch
xe-0/0/2                up    up
xe-0/0/2.0              up    up   eth-switch
xe-0/0/3                up    up
xe-0/0/3.0              up    up   eth-switch
xe-0/0/4                up    up
xe-0/0/4.0              up    up   eth-switch
xe-0/0/5                up    up
xe-0/0/5.0              up    up   eth-switch
xe-0/0/6                up    up
xe-0/0/6.0              up    up   inet
xe-0/0/7                up    up
xe-0/0/7.0              up    up   inet
xe-0/0/8                up    up
xe-0/0/8.0              up    up   inet
xe-0/0/9                up    up
xe-0/0/9.0              up    up   inet
xe-0/0/10               up    up
xe-0/0/10.0             up    up   inet
xe-0/0/11               up    up
xe-0/0/11.0             up    up   inet
bme0                    up    up
bme0.0                  up    up   inet     128.0.0.1/2
                                            128.0.0.4/2
                                            128.0.0.16/2
                                            128.0.0.63/2
cbp0                    up    up
dsc                     up    up
em0                     up    up
em0.0                   up    up   inet     10.0.0.201/24
em1                     up    up
em1.0                   up    up   inet     169.254.0.2/24
em2                     up    up
em2.32768               up    up   inet     192.168.1.2/24
em3                     up    up
em4                     up    up
em5                     up    up
esi                     up    up
gre                     up    up
ipip                    up    up
irb                     up    up
lo0                     up    up
lo0.0                   up    up   inet
                                   inet6    fe80::286:2b0f:fca1:f500
lo0.16385               up    up   inet
lsi                     up    up
mtun                    up    up
pimd                    up    up
pime                    up    up
pip0                    up    up
tap                     up    up
vme                     up    down
vtep                    up    up

何も設定していない状況でのリソース状況とかを見ていく。

root@vqfx-re:RE:0% vmstat
 procs      memory      page                   disk   faults      cpu
 r b w     avm    fre  flt  re  pi  po  fr  sr ad0   in   sy  cs us sy id
 2 0 0 4940056 289632   79   1   6   0  84   0   0  853 2822 1917  0 29 70


root@vqfx-re:RE:0% df -h
Filesystem             Size    Used   Avail Capacity  Mounted on
/dev/ad0s1a            2.4G    405M    1.8G    18%    /
devfs                  1.0K    1.0K      0B   100%    /dev
/dev/md0                87M     87M      0B   100%    /packages/mnt/jbase
/dev/md1               527M    527M      0B   100%    /packages/mnt/jkernel-qfx-x86-32-15.1X53-D60.4
/dev/md2                31M     31M      0B   100%    /packages/mnt/jpfe-qfx-10-f-15.1X53-D60.4
/dev/md3                11M     11M      0B   100%    /packages/mnt/jdocs-dc-re-15.1X53-D60.4
/dev/md4               215M    215M      0B   100%    /packages/mnt/jroute-qfx-x86-32-15.1X53-D60.4
/dev/md5                32M     32M      0B   100%    /packages/mnt/jcrypto-dc-re-15.1X53-D60.4
/dev/md6                53M     53M      0B   100%    /packages/mnt/jswitch-qfx-x86-32-15.1X53-D60.4
/dev/md7                25M     25M      0B   100%    /packages/mnt/jweb-qfx-15.1X53-D60.4
/var/jail/etc          2.4G    405M    1.8G    18%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/var/etc
/var/jail/run          2.4G    405M    1.8G    18%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/var/run
/var/jail/tmp          2.4G    405M    1.8G    18%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/var/tmp
/var/tmp               2.4G    405M    1.8G    18%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/var/tmp/uploads
devfs                  1.0K    1.0K      0B   100%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/dev
/var/jail/jweb-app     2.4G    405M    1.8G    18%    /packages/mnt/jweb-qfx-15.1X53-D60.4/jail/var/jweb-app
/dev/md8                12M     12M      0B   100%    /packages/mnt/py-base-i386-15.1X53-D60.4
/dev/md9               1.0G     10K    926M     0%    /tmp
procfs                 4.0K    4.0K      0B   100%    /proc
/dev/ad0s1e            604M    110K    555M     0%    /config
/var/jails/rest-api    2.4G    405M    1.8G    18%    /packages/mnt/jroute-qfx-x86-32-15.1X53-D60.4/web-api/var

start shell して top

last pid:  1882;  load averages:  0.20,  0.30,  0.31                                                                         up 0+01:17:00  14:36:02
73 processes:  1 running, 71 sleeping, 1 zombie
CPU states:  0.0% user,  0.0% nice,  4.5% system,  9.8% interrupt, 85.7% idle
Mem: 564M Active, 51M Inact, 66M Wired, 89M Cache, 69M Buf, 203M Free
Swap: 1024M Total, 1024M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
 1452 root        4  96    0   336M   231M select   7:28  3.76% olive-ultimat.elf

起動直後のところだけ dmesg を抜粋。

root@vqfx-re:RE:0% dmesg | more
Copyright (c) 1996-2016, Juniper Networks, Inc.
All rights reserved.
Copyright (c) 1992-2007 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
JUNOS 15.1X53-D60.4 #0: 2016-08-26 23:07:01 UTC
    builder@mayland.juniper.net:/volume/build/junos/15.1/service/15.1X53-D60.4/obj/i386/junos/bsd/kernels/JUNIPER-QFX/kernel
can't re-use a leaf (fe_storm_timeout)!
can't re-use a leaf (alt_break_to_debugger)!
can't re-use a leaf (break_to_debugger)!
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: QEMU Virtual CPU version 2.5+ (3096.49-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x663  Stepping = 3
  Features=0x783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x80202021<SSE3,VMX,CX16,x2APIC,<b31>>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
real memory  = 1073741824 (1024 MB)
avail memory = 1017835520 (970 MB)
MPTable: <BOCHSCPU 0.1         >
Security policy loaded: Junos MAC/veriexec (mac_veriexec)
MAC/veriexec fingerprint module loaded: SHA256
MAC/veriexec fingerprint module loaded: SHA1
ioapic0: Assuming intbase of 0
ioapic0 <Version 1.1> irqs 0-23 on motherboard
ETHERNET SOCKET BRIDGE initialising
fpga driver loaded, 0 (null)
FXPCI warning: hw.pci.enable_static_config is not set.
Initializing Kernel PVIDB.
Initializing DCF X86 platform properties ..
Calling dcf_ng_hw_init for platform hw vecs initialization
    ACPI-0314: *** Error: Invalid signature where RSDP indicates RSDT/XSDT should be located
    ACPI-0325: *** Error: Looking for RSDT (RSDP->Rev < 2)
    ACPI-0181: *** Error: AcpiLoadTables: Could not load RSDT: AE_BAD_SIGNATURE
    ACPI-0213: *** Error: AcpiLoadTables: Could not load tables: AE_BAD_SIGNATURE
ACPI: table load failed: AE_BAD_SIGNATURE
cpu0 on motherboard
pcib0: <MPTable Host-PCI bridge> pcibus 0 on motherboard
pci0: <PCI bus> on pcib0
Correcting Natoma config for non-SMP
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX3 WDMA2 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xc180-0xc18f at device 1.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
smb0: <Intel 82371AB SMB controller> irq 9 at device 1.3 on pci0
pci0: <display, VGA> at device 2.0 (no driver attached)
pci0: <network, ethernet> at device 3.0 (no driver attached)
pci0: <network, ethernet> at device 4.0 (no driver attached)
pci0: <network, ethernet> at device 5.0 (no driver attached)

PFE 確認

Juniper 公式 gitbuh | Juniper/vqfx10k-vagrant にも書いてありますが、アカウント: root パスワード: no でログインできます。あまり入ることないですが。

root@localhost:~# uname -a
Linux localhost 3.10.62-ltsi-WR6.0.0.21_standard #1 SMP PREEMPT Mon Nov 30 07:26:43 PST 2015 x86_64 x86_64 x86_64 GNU/Linux


root@localhost:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:86:2b:38:da:00 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::286:2bff:fe38:da00/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:86:2b:38:da:01 brd ff:ff:ff:ff:ff:ff
    inet 169.254.0.1/24 brd 169.254.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::286:2bff:fe38:da01/64 scope link
       valid_lft forever preferred_lft forever
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0

root@localhost:~# ip route
169.254.0.0/24 dev eth1  proto kernel  scope link  src 169.254.0.1

root@localhost:~# cat /etc/network/interfaces
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 169.254.0.1
netmask 255.255.255.0

デフォルト状態だとさほどメモリ持っていかれないようです。

root@localhost:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0      0 367600  11748 498320    0    0    37    37 1188  445 76 24  1  0


root@localhost:~# free
             total       used       free     shared    buffers     cached
Mem:       1533320    1165648     367672          0      11708     498332
-/+ buffers/cache:     655608     877712
Swap:          972          0        972


root@localhost:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          1.9G  837M  941M  48% /
udev            732M     0  732M   0% /dev
none            732M     0  732M   0% /dev
tmpfs           749M  240K  749M   1% /run
/dev/sda3       1.9G  837M  941M  48% /
/dev/sda5       597M   52M  502M  10% /var
tmpfs           749M  240K  749M   1% /run
tmpfs           749M     0  749M   0% /var/volatile
/dev/sda1       1.2G  210M 1004M  18% /boot
/dev/sda2       103M  1.6M   94M   2% /app_disk
tmpfs           749M  240K  749M   1% /run/named-chroot/var/run/named
tmpfs           749M  240K  749M   1% /run/named-chroot/var/run/bind
none            732M     0  732M   0% /run/named-chroot/dev/random
none            732M     0  732M   0% /run/named-chroot/dev/zero
none            732M     0  732M   0% /run/named-chroot/dev/null

簡易疎通確認

前の絵でノードを 2 個繋いでいるので、適当にその物理IFに access vlan 100 を割り当てて疎通確認しました。(雑)

{master:0}
root@vqfx-re> show ethernet-switching interface
Routing Instance Name : default-switch
Logical Interface flags (DL - disable learning, AD - packet action drop,
                         LH - MAC limit hit, DN - interface down,
                         MMAS - Mac-move action shutdown,
                         SCTL - shutdown by Storm-control )

Logical          Vlan          TAG     MAC         STP         Logical           Tagging
interface        members               limit       state       interface flags
xe-0/0/1.0                             8192                                       untagged
                 VLAN0100      100     1024        Forwarding                     untagged
Routing Instance Name : default-switch
Logical Interface flags (DL - disable learning, AD - packet action drop,
                         LH - MAC limit hit, DN - interface down,
                         MMAS - Mac-move action shutdown,
                         SCTL - shutdown by Storm-control )

Logical          Vlan          TAG     MAC         STP         Logical           Tagging
interface        members               limit       state       interface flags
xe-0/0/2.0                             8192                                       untagged
                 VLAN0100      100     1024        Forwarding                     untagged



{master:0}
root@vqfx-re> show ethernet-switching table

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
           SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)


Ethernet switching table : 2 entries, 2 learned
Routing instance : default-switch
    Vlan                MAC                 MAC         Age    Logical                NH        RTR
    name                address             flags              interface              Index     ID
    VLAN0100            00:86:2b:47:b6:01   D             -   xe-0/0/2.0             0         0
    VLAN0100            00:86:2b:8d:10:01   D             -   xe-0/0/1.0             0         0

おしまい

  • インストールしただけなので別に...
  • Juniper さんありがとうございます!感謝を込めて、vQFX で試した内容を追っていくつか纏めておきます。

参考書籍

Juniper QFX10000 の独自プロセッサ開発経緯や特徴・Architecture(HW/SW) の結構詳しい説明・MPLS/VXLAN+EVPNの設計ポイントなど、非常に良い本なので、こんなニッチな記事を読んでいる人におススメ!

Juniper QFX10000 Series: A Comprehensive Guide to Building Next-Generation Data Centers

Juniper QFX10000 Series: A Comprehensive Guide to Building Next-Generation Data Centers

Juniper QFX10000 Series: A Comprehensive Guide to Building Next-Generation Data Centers (English Edition)

Juniper QFX10000 Series: A Comprehensive Guide to Building Next-Generation Data Centers (English Edition)

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

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

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

.

概要

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

本項でやること

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

モチベーション

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

前段

Nmap

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

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

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

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

ruby-nmap

上記公式からの抜粋↓

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

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

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

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

Ruby SNMP

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

Ansible Dynamic Inventory

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

Discovery 環境準備

Discovery サーバ環境情報

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

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

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

$ gem list

*** LOCAL GEMS ***

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

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

Nmap 7.0 インストール

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

Download は以下から。

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

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

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

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

(略)

NMAP SUCCESSFULLY INSTALLED

$ nmap --version

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

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

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

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

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

Gemfile を以下のように編集

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

#
gem 'ruby-nmap'
gem `snmp`


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

PLATFORMS
  ruby

DEPENDENCIES
  ruby-nmap
  snmp

BUNDLED WITH
   1.10.6

NW 機器側の SNMP 設定

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

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

何機種分か設定例を。

  • JUNOS 例

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

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

Discovery スクリプト作成~配置

ディレクト

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

$ mkdir scripts
$ cd scripts/

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

スクリプト本体

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

# encoding: utf-8

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

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


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

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

  return ret
end



#
# main
#
begin

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

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

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

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

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


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

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

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

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


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

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


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

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

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

setting_discovery_nwdevs.yml

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

Nmap input file

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

target_nw.txt

192.168.101.0/24  # mgmt NW

Discovery 実行~出力確認

スクリプト実行

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

Discoveryスクリプト実行

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

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

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

(略)

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

生成ファイル確認

生成されたファイル

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

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

Nmap が生成した xml ファイル

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

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

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

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

list_nwdev.json

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

連携例 ~Ansible の Dynamic Inventory~

やること

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

環境

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

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

Dynamic Inventory サンプルスクリプト

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

dynamic_nwdevs.rb

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

require 'json'

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


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

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

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

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


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

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

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

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

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

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

Arista 用のサンプル Playbook

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

playbook_sample_arista.yml

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

  vars:
    eapi_username: kotetsu
    eapi_password: kotetsu
    eapi_protocol: http

  roles:
    - role: arista.eos

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

    - debug: var=output_version

Playbook 実行

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

DynamicInventoryでPlaybook実行

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

おしまい

plus one

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

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

所感

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

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

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

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

.

概要

本項でやること

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

環境情報

vSRX?

手順

vSRX イメージファイル取得

ovf 形式にファイル変換

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

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

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

編集前

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

編集後

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

VirtualBox に ovf をインポート

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

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

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

f:id:kakkotetsu:20170513145216j:plain

f:id:kakkotetsu:20170513145222j:plain

f:id:kakkotetsu:20170513145227j:plain

f:id:kakkotetsu:20170513145235j:plain

f:id:kakkotetsu:20170513145240j:plain

f:id:kakkotetsu:20170513145245j:plain

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

f:id:kakkotetsu:20170513145259j:plain

f:id:kakkotetsu:20170513145303j:plain

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

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

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

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

ssh して状態確認

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

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

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

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

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

おわり

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

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

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

概要

本項でやること

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

環境情報

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

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

手順

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

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

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

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

bagpipe-bgp インストール

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

    devstack plugin fix

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


$ sudo python setup.py install

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

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

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

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

$ cd bagpipe-bgp/

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

$ sudo ./install_bagpipe_bgp.sh

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

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

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

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

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

(略)


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

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

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

(略)

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

(略)

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

bagpipe-bgp 起動~状態確認

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

起動

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

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

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

ログ確認

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

状態確認(bagpipe-looking-glass)

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

おわり

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

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

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

概要

本項でやること

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

環境情報

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

$ uname -r
3.19.0-25-generic

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

構築手順

Go インストール

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

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

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

$ go version
go version go1.5.1 linux/amd64

gobgp インストール

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

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

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

gobgpd.conf 作成

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

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

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

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

gobgpd 起動

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

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

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

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

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

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

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

動作確認

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

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

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

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

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

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

$ source ~/gobgp/gobgp-completion.bash

おわり

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

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

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

概要

本項でやること

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

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

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

Arista EOS?

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

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

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

環境

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

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

サマリ

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

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

詳細

EOS CLI から bash に降りる

こんな感じで。

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

Arista Networks EOS shell

[kotetsu@veos-dev ~]$

root 化が必要な時には。

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

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

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

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

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

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

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

ディレクトリ探索

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

コードの一例

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

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

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

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

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

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

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

参考

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

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

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

.

概要

本項でやること

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

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

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

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

参考情報(公式より)

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

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

環境情報

Ansible

target device (NW機器)

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

  • OS:12.1X47-D10.4

サンプル

設定ファイル/Playbook

hosts

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

[junos]
192.168.101.70

[junos:vars]
ansible_ssh_user=kotetsu
ansible_ssh_pass=kotetsu

ansible.cfg

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

[defaults]
transport=ssh

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

Playbook

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

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

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

    - debug: var=output_show_version

実行例

$ ansible-playbook playbook_junos.yml -i hosts

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

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

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

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

雑記

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