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
- PFE は
- PFE も RE も
$ 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母艦に配置
- 前述の公式から飛べる vQFX Evaluation - Download Software へ
- 2016/12/22 現在ダウンロード可能な最新版一式(今回は
Format
がvmdk
の 2 ファイルのみで OK)をダウンロードVQFX10K PFE Disk Image
VQFX10K RE Disk Image
- 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
以下でとりあえず(自分の検証用途では問題なく)動いてます。
RE
以下でとりあえず(自分の検証用途では問題なく)動いてます。
ここの Adapters
数は、最低 2 個必要で 4 個目からが xe-0/0/0~
にマッピングされます。上限数はちゃんと確認していないものの、6 個しか割り当てなくても固定で xe-0/0/11
まで見えるし、12個の筈。
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~ |
というわけで、例えば以下の感じで。
絵でいうところの SW1
~ Cloud
というやつは外界 (母艦KVM の linux 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/0
~ xe-0/0/11
まで出来てますねえ...しかも何故か全て Link
が up
状態
{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
- 作者: Douglas Richard, Jr. Hanks
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/08/11
- メディア: ペーパーバック
- この商品を含むブログを見る
- 作者: Douglas Richard, Jr. Hanks
- 出版社/メーカー: O'Reilly Media
- 発売日: 2016/07/28
- メディア: Kindle版
- この商品を含むブログを見る
NW 機器の自前構成情報管理 (ruby-nmap+SNMP で Discovery ~ Ansible Dynamic Inventory 連携) (original : 2015/12/15)
この記事は某所で 2015/12/15
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。(以下一例)
Ansible
のバージョン1.8
系、今となっては古い
.
概要
NetOpsCoding Advent Calendar 2015 の 2015/12/15 分エントリです。 Ansible Dynamic Inventory で検索してこれにぶつかった人、ごめんなさい。そこはオマケ程度です。
本項でやること
- Nmap と SNMP を ruby で操作して、手っ取り早く NW 機器の構成情報を取得~ JSON 形式で吐き出す
- 上記ファイルを構成情報マスタとみなして、Ansible の dynamic inventory と連携する
モチベーション
- 仮想マシンの構成管理ソフトは割とあるけれど、物理含めた NW 機器も統合的に…となると選択肢は少ない…
- Nmap の fingerprint (OS検出)みたいなことも NW 機器相手に高精度でやりたい
- 色々なミドルウェアで hosts ファイル的な異なるフォーマットの設定ファイルを求めてくるが、手っ取り早く生成したい
- 大袈裟な仕組みは使いたくない
- 2015/11/19 に Nmap 7.0 がリリースされたので使わなきゃ(使命感)
前段
Nmap
言わずと知れた OSS ツールで、以下のような機能があります。超優れもの!
- Host Discovery | 公式
- OS Detection(fingerprint) | 公式
- ポートスキャンの結果などから、対象機器の OS を類推する
- etc etc
まあ 公式ドキュメントのイントロ を見れば分かるでしょう。
インフラ屋さんだと、ファイアウォールやら iptables やらのテストや、簡易な脆弱性診断で使ったりで馴染み深いのでは。
監視ソフトの Discovery 機能なんかでも、内部的に Nmap を呼んでいるものがあります。
基本的にはシェルから扱うのですが、GUI ツールであるZenmapもあります。
ruby-nmap
上記公式からの抜粋↓
A Rubyful interface to the Nmap exploration tool and security / port scanner.
以下のようなことができる Nmap の ruby 版ライブラリです。(作者は異なるものの、同じような機能を持つ Python 版や Perl 版ライブラリも存在する)
- Host Discovery のオプション群を分かりやすい表現で書ける
- CLI オプションとのマッピングは ruby-nmap/lib/nmap/task.rb を見るのが手っ取り早い
- Host Discovery で生成された xml をパース
- xml のパースを自前でやらなくて済むってだけで、嬉しくないですか。僕は嬉しい。
公式の Examples を見ると一目瞭然でしょう。
Ruby SNMP
SNMP を扱える ruby 版ライブラリです。(雑)
割と日本語記事も多いし、メジャーなやつでしょう。
Ansible Dynamic Inventory
- Dynamic Inventory | Ansible Documentation
- 公式ドキュメント
- ansible/contrib/inventory | github
- Ansible 本体に付属してくるサンプルスクリプト群(以下は例)
- OpenStack
- Zabbix
- Proxmox
- Amazon EC2
- VMware
- ssh_config
- etc etc
- Ansible 本体に付属してくるサンプルスクリプト群(以下は例)
- Ansible meetuptokyo 2015 Dynamic Inventory | SlideShare
- プロの Ansibler による分かり易い解説資料
他の場所に構成管理マスタがあり、Ansible の hosts ファイルを静的に書くと二重管理になるような環境で、構成管理マスタから hosts 情報をとってくる…という機能。
Discovery 環境準備
Discovery サーバ環境情報
Discovery を動かすサーバは以下です。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS" $ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux] $ gem list *** LOCAL GEMS *** bigdecimal (1.2.6) bundler (1.10.6) io-console (0.4.3) json (1.8.1) minitest (5.4.3) power_assert (0.2.2) psych (2.0.8) rake (10.4.2) rdoc (4.2.0) test-unit (3.0.8)
あと、このサーバから network reachable な NW 機器をいくらか動かしておきます。(本項では同一セグメント)
Nmap 7.0 インストール
以下公式手順に従います。
Download は以下から。
こんな感じでいけるでしょう。
$ sudo -E apt-get install libssl-dev $ cd /var/tmp/ $ wget https://nmap.org/dist/nmap-7.00.tar.bz2 $ bzip2 -cd nmap-7.00.tar.bz2 | tar xvf - $ ls -al total 8724 drwxrwxrwt 3 root root 4096 Dec 5 14:38 . drwxr-xr-x 11 root root 4096 Nov 7 17:42 .. drwxr-xr-x 22 kotetsu kotetsu 4096 Nov 20 01:19 nmap-7.00 -rw-rw-r-- 1 kotetsu kotetsu 8918906 Nov 20 05:23 nmap-7.00.tar.bz2 $ cd nmap-7.00/ $ ./configure $ make $ sudo -E make install (略) NMAP SUCCESSFULLY INSTALLED $ nmap --version Nmap version 7.00 ( https://nmap.org ) Platform: x86_64-unknown-linux-gnu Compiled with: nmap-liblua-5.2.3 openssl-1.0.1f nmap-libpcre-7.6 nmap-libpcap-1.7.3 nmap-libdnet-1.12 ipv6 Compiled without: Available nsock engines: epoll poll select
ruby-nmap / snmp の gem インストール
どちらも gem install
一発で入ります。
ruby-nmap
は xml を扱う関係上、依存関係に Nokogiri
があります。なので、インストールで躓いたらググって解決して下さい。
以下は bundler
を使った場合の手順です。
$ cd $ mkdir discovery $ cd discovery/ $ bundle init Writing new Gemfile to /home/kotetsu/discovery/Gemfile Gemfile を以下のように編集 $ cat Gemfile # A sample Gemfile source "https://rubygems.org" # gem 'ruby-nmap' gem `snmp` $ bundle install --path vendor/bundle $ cat Gemfile.lock GEM remote: https://rubygems.org/ specs: mini_portile2 (2.0.0) nokogiri (1.6.7) mini_portile2 (~> 2.0.0.rc2) rprogram (0.3.2) ruby-nmap (0.8.0) nokogiri (~> 1.3) rprogram (~> 0.3) snmp (1.2.0) PLATFORMS ruby DEPENDENCIES ruby-nmap snmp BUNDLED WITH 1.10.6
NW 機器側の SNMP 設定
今回、OS検知もどきとして SNMP Get で NW 機器の sysDescr
を取得します。
機種依存なく NW 機器の OS を知りたいならば、まあこれしかないでしょう、ってことで。
あと、ラック情報とかも纏めて取れるようにしておくと良いよね、ってことでそれは sysLocation
に設定しておきます(本項では全部仮想環境なのでアレな感じですが)。
何機種分か設定例を。
- JUNOS 例
snmp description とかを設定していると、OS 情報(デフォルト値)をとれなくなってしまうので注意。
kotetsu@vsrx01> show configuration | display set | match snmp set snmp location KotetsuNoteVB set snmp community KOTETSU_NW
- Arista 例
vEOS-spine001#show run | inc snmp snmp-server location KotetsuNoteVB snmp-server community KOTETSU_NW ro
- VyOS 例
kotetsu@vtep-vyos01:~$ show configuration commands | match snmp set service snmp community 'KOTETSU_NW' set service snmp location 'KotetsuNoteVB'
Discovery スクリプト作成~配置
ディレクトリ
以下のように適当なディレクトリを用意して、
$ mkdir scripts $ cd scripts/
後述の 3 つのファイルを配置します。
- スクリプト本体 (discovery_nwdevs.rb)
- スクリプトの設定ファイル(setting_discovery_nwdevs.yml)
- Nmap input file (target_nw.txt)
スクリプト本体
ruby-nmap
と Ruby SNMP
を使って NW 機器の構成情報を収集して、JSON ファイルに吐き出すサンプルスクリプトです。
# encoding: utf-8 # # Usage: # bundle exec ruby discovery_nwdevs.rb <setting.yml> # require 'nmap/program' require 'nmap/xml' require 'snmp' require 'yaml' require 'json' # # SNMP Get method # def snmp_get_system(target_ip, snmp_params) manager = SNMP::Manager.new( :host => target_ip, :port => 161, :version => :SNMPv2c, :community => snmp_params["community"], :timeout => 1, :retries => 1 ) # sysName にはホスト名 # sysDescr には機種やバージョン情報 # sysLocation は(設定していれば)設置場所 # が入っている筈なので、それをとる ret = Hash::new ret[:sysname] = manager.get_value(snmp_params["oid_sysname"]).to_s rescue "" ret[:sysdesc] = manager.get_value(snmp_params["oid_sysdesc"]).to_s rescue "" ret[:syslocation] = manager.get_value(snmp_params["oid_syslocation"]).to_s rescue "" manager.close return ret end # # main # begin # 外出ししている情報 YAML ファイルをロード params = YAML.load_file(ARGV[0]) # Nmap の Host Discovery をして xml ファイルに書き出す # ポートスキャンは UDP/161 のみに限定して、SNMP Get で情報が取得可能かどうかを見ておく # NW 機器なんて Nmap の fingerprint 機能に頼るよりは、SNMP Get で見た方が確実なので、fingerprint もしない Nmap::Program.scan do |nmap| nmap.syn_scan = false nmap.udp_scan = true nmap.service_scan = false nmap.os_fingerprint = false nmap.xml = params["nmap_params"]["xml_file"] nmap.verbose = true nmap.ports = [] unless params["nmap_params"]["scan_udp_ports"].nil? then params["nmap_params"]["scan_udp_ports"].each do |port| nmap.ports << port["port"] end end # Discovery の対象とする NW アドレスを羅列したファイル nmap.target_file = params["nmap_params"]["scan_target_files"]["targetfile"] end # 反応があったノード(up host)の情報(Hash)を格納 array_hosts = [] # Nmap の Host Discovery で生成された xml ファイルを走査 # 反応があったノード(up host)を取得し、 # UDP/161 が Open 判定されていたら SNMP で追加情報取得する Nmap::XML.new(params["nmap_params"]["xml_file"]) do |xml| xml.each_up_host do |host| hash_host = {} hash_snmp_info = {} hash_host[:ipaddr] = host.ipv4 hash_host[:ptr] = host.hostname hash_host[:sysname] = "" hash_host[:sysdesc] = "" hash_host[:syslocation] = "" host.each_port do |port| if (port.number == 161) && (port.state == :open) then hash_snmp_info = snmp_get_system(host.ipv4, params["snmp_params"]) unless hash_snmp_info.nil? then hash_host[:sysname] = hash_snmp_info[:sysname] hash_host[:sysdesc] = hash_snmp_info[:sysdesc] hash_host[:syslocation] = hash_snmp_info[:syslocation] end end end array_hosts << hash_host end end # 収集したノードの情報を JSON 形式ファイルで吐き出す unless array_hosts.nil? then dir_result = File.expand_path(params["nmap_params"]["output_directory"]) json_hosts = JSON.pretty_unparse(array_hosts) File.open("#{dir_result}/list_nwdev.json","w") do |file| file.write(json_hosts) end end # なんか適切にエラーハンドリングしてください rescue SNMP::RequestTimeout => e # rescue StandardError => e puts e puts e.backtrace ensure # end
スクリプトの設定ファイル
前述のスクリプトに食わせる設定ファイルです。
別環境でスクリプトに手を加えず、設定ファイルだけ書き換えて使う…みたいなことを考えていたのですが…「標準 MIB の OID が変わるっていうのか?」なんて突っ込みは不可。
setting_discovery_nwdevs.yml
nmap_params : # nmap の -iL オプションで渡す discovery 対象を記載したファイル scan_target_files : targetfile : './target_nw.txt' # nmap の -PU -p オプションで渡す UDP ポートスキャン対象 scan_udp_ports : - port : 161 # nmap の -oX オプションで渡す、Host Discovery の output である xml ファイル xml_file : './scan.xml' # スクリプトの最終 output である JSON ファイルを生成するディレクトリ(nmap に渡すオプションではないので、nmap_params 配下にいるのは違和感ありますね…) output_directory : './' snmp_params : # 動かす環境の NW 機器に設定してある SNMP community # 同じ環境の community ならきっと統一されているだろう、という前提のもと… community : 'KOTETSU_NW' # SNMP Get 対象の OID たち oid_sysname : '1.3.6.1.2.1.1.5.0' oid_sysdesc : '1.3.6.1.2.1.1.1.0' oid_syslocation : '1.3.6.1.2.1.1.6.0'
Nmap input file
Nmap で Host Discovery する対象を羅列したファイル。
ruby-nmap は内部的に nmap に -iL
オプションで食わせているだけなので、記法は Target Specification | Nmap 公式 を参照。
target_nw.txt
192.168.101.0/24 # mgmt NW
Discovery 実行~出力確認
スクリプト実行
こんな感じで。
Nmap でポートスキャンするには基本的には root 権限が必要なので、sudo
しています。(以下公式の参考資料)
Discoveryスクリプト実行
$ sudo -E bundle exec ruby discovery_nwdevs.rb setting_discovery_nwdevs.yml Starting Nmap 7.00 ( https://nmap.org ) at 2015-12-05 14:11 JST Initiating ARP Ping Scan at 14:11 Scanning 255 hosts [1 port/host] Completed ARP Ping Scan at 14:11, 1.64s elapsed (255 total hosts) Initiating Parallel DNS resolution of 255 hosts. at 14:11 Completed Parallel DNS resolution of 255 hosts. at 14:11, 0.04s elapsed (略) Read data files from: /usr/local/bin/../share/nmap Nmap done: 256 IP addresses (5 hosts up) scanned in 2.14 seconds Raw packets sent: 513 (14.784KB) | Rcvd: 11 (836B)
生成ファイル確認
生成されたファイル
Nmap が生成した scan.xml
と、スクリプトが生成した list_nwdev.json
が root:root
で吐き出されています。
$ ls -al total 60 drwxrwxr-x 2 kotetsu kotetsu 4096 Dec 6 14:11 . drwxrwxr-x 5 kotetsu kotetsu 4096 Dec 6 14:08 .. -rw-r--r-- 1 kotetsu kotetsu 3129 Dec 6 14:04 discovery_nwdevs.rb -rw-r--r-- 1 root root 643 Dec 6 14:11 list_nwdev.json -rw-r--r-- 1 root root 34690 Dec 6 14:11 scan.xml -rw-r--r-- 1 kotetsu kotetsu 281 Dec 6 14:01 setting_discovery_nwdevs.yml -rw-rw-r-- 1 kotetsu kotetsu 28 Dec 6 11:07 target_nw.txt
Nmap が生成した xml ファイル
scan.xml
の中身を軽く見ていきます。(この辺は、Nmap を使っている人ならよく知っているのでは)
- 最初のほうで、実際に
ruby-nmap
が実行したコマンドオプションや Nmap の実行バージョン、実行時刻などが分かる
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE nmaprun> <?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?> <!-- Nmap 7.00 scan initiated Wed Dec 6 14:11:37 2015 as: /usr/local/bin/nmap -sU -oX ./scan.xml -v -p 161 -iL ./target_nw.txt --> <nmaprun scanner="nmap" args="/usr/local/bin/nmap -sU -oX ./scan.xml -v -p 161 -iL ./target_nw.txt" start="1449637897" startstr="Sat Dec 6 14:11:37 2015" version="7.00" xmloutputversion="1.04"> <scaninfo type="udp" protocol="udp" numservices="1" services="161"/> <verbose level="1"/> <debugging level="0"/> <taskbegin task="ARP Ping Scan" time="1449378697"/> <taskend task="ARP Ping Scan" time="1449378699" extrainfo="255 total hosts"/> <taskbegin task="Parallel DNS resolution of 255 hosts." time="1449378699"/> <taskend task="Parallel DNS resolution of 255 hosts." time="1449378699"/>
- Down しているホストの情報が続く
<host><status state="down" reason="no-response" reason_ttl="0"/> <address addr="192.168.101.3" addrtype="ipv4"/> </host> <host><status state="down" reason="no-response" reason_ttl="0"/> <address addr="192.168.101.4" addrtype="ipv4"/> </host>
- Up しているホストの情報が続く
<host starttime="1449378697" endtime="1449378699"><status state="up" reason="arp-response" reason_ttl="0"/> <address addr="192.168.101.30" addrtype="ipv4"/> <address addr="52:54:00:76:24:2C" addrtype="mac" vendor="QEMU virtual NIC"/> <hostnames> <hostname name="vsrx01" type="PTR"/> </hostnames> <ports><port protocol="udp" portid="161"><state state="open" reason="udp-response" reason_ttl="64"/><service name="snmp" method="table" conf="3"/></port> </ports> <times srtt="24054" rttvar="34787" to="163202"/> </host>
スクリプトが生成した JSON ファイル
- Nmap が名前解決出来たもの(以下例では
192.168.101.30
のみ名前登録してあった)は xml のhostname
をptr
に格納 sysname
とsysdesc
とsyslocation
は SNMP Get で取得した情報- Nmap で UDP 161 が Open していないと判断した
192.168.101.172
に関しては、ほとんど情報は取得できていない- まあ、その IP アドレスが何らかの機器に使われている、ということくらい
list_nwdev.json
[ { "ipaddr": "192.168.101.30", "ptr": "vsrx01", "sysname": "vsrx01", "sysdesc": "Juniper Networks, Inc. vsrx internet router, kernel JUNOS 15.1X49-D15.4, Build date: 2015-07-31 03:30:01 UTC Copyright (c) 1996-2015 Juniper Networks, Inc.", "syslocation": "KotetsuNoteVB" }, { "ipaddr": "192.168.101.50", "ptr": null, "sysname": "vEOS-spine001", "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS", "syslocation": "KotetsuNoteVB" }, { "ipaddr": "192.168.101.52", "ptr": null, "sysname": "vEOS-leaf001", "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS", "syslocation": "KotetsuNoteVB" }, { "ipaddr": "192.168.101.71", "ptr": null, "sysname": "vtep-vyos01", "sysdesc": "Vyatta VyOS 1.1.1", "syslocation": "KotetsuNoteVB" }, { "ipaddr": "192.168.101.172", "ptr": null, "sysname": "", "sysdesc": "", "syslocation": "" } ]
連携例 ~Ansible の Dynamic Inventory~
やること
先に生成した JSON ファイルを「構成情報マスタ」とみなして連携する例として Ansible の Dynamic Inventory で使ってみます。
NW 機器の中から Arista だけを抜き出して、Arista 用の Role を使った Playbook を実行するです。
環境
横着して、昔(2014/12)作った以下環境を流用して Arista をターゲットに使います。
2015/12 現在だと、Ansible は 2.1.0 とかまで出ているし、ansible-eos (Arista 用の Role)もかなり更新が入っていますが…。
Dynamic Inventory サンプルスクリプト
先に作った JSON ファイルをパースして、最低限動くだけのサンプルです。
要するに sysDescr
で機種を仕分けているだけ。
dynamic_nwdevs.rb
#! /usr/bin/env ruby # encoding: utf-8 require 'json' FILE_INVENTORY = '/home/kotetsu/discovery/scripts/list_nwdev.json' begin if (ARGV[0] && ARGV[0] == '--list') then ret = {} list_junos = [] list_arista = [] list_vyos = [] JSON.load(File.open(FILE_INVENTORY).read).each do |nwdev| case nwdev["sysdesc"] when /^Juniper.*JUNOS.*/ list_junos << nwdev["ipaddr"] when /^Arista Networks EOS.*/ list_arista << nwdev["ipaddr"] when /^Vyatta VyOS/ list_vyos << nwdev["ipaddr"] else # end end ret["junos_all"] = list_junos.dup unless list_junos.size == 0 ret["arista_all"] = list_arista.dup unless list_arista.size == 0 ret["vyos_all"] = list_vyos.dup unless list_vyos.size == 0 puts JSON.pretty_unparse(ret) elsif (ARGV[1] && ARGV[0] == "--host") then JSON.load(File.open(FILE_INVENTORY).read).each do |nwdev| if ( nwdev["sysname"] =~ Regexp.new(ARGV[1]) || nwdev["ipaddr"] =~ Regexp.new(ARGV[1]) || nwdev["ptr"] =~ Regexp.new(ARGV[1]) ) then puts JSON.pretty_unparse(nwdev) end end end rescue Exception => e puts e puts e.backtrace end
公式のサンプルスクリプトでは Python が圧倒的に多いですが、よくある「所定の引数をつけて実行した時に、所定のOutputを返せば良い」系のやつなので、言語は何で書いても良いです。(この程度ならシェルスクリプトでも)
で、これを実行すると以下の感じ。
$ ./dynamic_nwdevs.rb --list { "junos_all": [ "192.168.101.30" ], "arista_all": [ "192.168.101.50", "192.168.101.52" ], "vyos_all": [ "192.168.101.71" ] } $ ./dynamic_nwdevs.rb --host vEOS-spine001 { "ipaddr": "192.168.101.50", "ptr": null, "sysname": "vEOS-spine001", "sysdesc": "Arista Networks EOS version 4.14.8M running on an Arista Networks vEOS", "syslocation": "KotetsuNoteVB" }
_meta
を出さないので、無駄な処理が走るのですがね。まあローカルのファイル読んでいるテスト環境なので…(モゴモゴ)
その辺は Ansible meetuptokyo 2015 Dynamic Inventory | SlideShare のスライド 10~12 を見ましょう。
Arista 用のサンプル Playbook
role
で Arista 公式の Role を呼んでいる完全に Arista 専用の Playbookhosts
では先の./dynamic_nwdevs.rb --list
で出力されたarista_all
という Arista 全台グループを指定show version
して stdout するだけ
playbook_sample_arista.yml
- name: eos nodes hosts: arista_all gather_facts: no sudo: true vars: eapi_username: kotetsu eapi_password: kotetsu eapi_protocol: http roles: - role: arista.eos tasks: - name: show version action: eos_command args: { commands: [ "show version" ], eapi_username: "{{ eapi_username }}", eapi_password: "{{ eapi_password }}", eapi_protocol: "{{ eapi_protocol }}" } register: output_version - debug: var=output_version
Playbook 実行
レッツゴー
(-i
で呼んでいるのが hosts
ファイルではなくて、先の dynamic_nwdevs.rb
なのがポイント)
DynamicInventoryでPlaybook実行
$ ansible-playbook playbook_sample_arista.yml -f 10 -u ansible -i dynamic_nwdevs.rb PLAY [eos nodes] ************************************************************** TASK: [arista.eos | check if running on eos node] ***************************** ok: [192.168.101.50] ok: [192.168.101.52] TASK: [arista.eos | collect eos facts] **************************************** ok: [192.168.101.50] ok: [192.168.101.52] TASK: [arista.eos | include eos variables] ************************************ ok: [192.168.101.50] ok: [192.168.101.52] TASK: [arista.eos | check for working directory] ****************************** ok: [192.168.101.52] ok: [192.168.101.50] TASK: [arista.eos | create source] ******************************************** skipping: [192.168.101.52] skipping: [192.168.101.50] TASK: [arista.eos | check if pip is installed] ******************************** ok: [192.168.101.50] ok: [192.168.101.52] TASK: [arista.eos | copy pip extension to node] ******************************* skipping: [192.168.101.50] skipping: [192.168.101.52] TASK: [arista.eos | create tmp config file to load pip] *********************** skipping: [192.168.101.50] skipping: [192.168.101.52] TASK: [arista.eos | load pip eos extension] *********************************** skipping: [192.168.101.52] skipping: [192.168.101.50] TASK: [arista.eos | copy required libraries to node] ************************** ok: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz) ok: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz) TASK: [arista.eos | install required libraries] ******************************* ok: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz) ok: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz) TASK: [arista.eos | install jsonrpclib] *************************************** skipping: [192.168.101.50] skipping: [192.168.101.52] TASK: [arista.eos | install required libraries and dependencies] ************** skipping: [192.168.101.50] => (item=eapilib-0.1.0.tar.gz) skipping: [192.168.101.52] => (item=eapilib-0.1.0.tar.gz) TASK: [show version] ********************************************************** ok: [192.168.101.52] ok: [192.168.101.50] TASK: [debug var=output_version] ********************************************** ok: [192.168.101.50] => { "output_version": { "changed": false, "invocation": { "module_args": "", "module_name": "eos_command" }, "output": [ { "command": "show version", "response": { "architecture": "i386", "bootupTimestamp": 1449902847.6, "hardwareRevision": "", "internalBuildId": "a6bbeeb3-95b7-42bc-9721-266f9bff424e", "internalVersion": "4.14.8M-2475814.4148M", "memFree": 20516, "memTotal": 996140, "modelName": "vEOS", "serialNumber": "", "systemMacAddress": "08:00:27:31:60:65", "version": "4.14.8M" } } ] } } ok: [192.168.101.52] => { "output_version": { "changed": false, "invocation": { "module_args": "", "module_name": "eos_command" }, "output": [ { "command": "show version", "response": { "architecture": "i386", "bootupTimestamp": 1449902847.71, "hardwareRevision": "", "internalBuildId": "a6bbeeb3-95b7-42bc-9721-266f9bff424e", "internalVersion": "4.14.8M-2475814.4148M", "memFree": 46872, "memTotal": 996140, "modelName": "vEOS", "serialNumber": "", "systemMacAddress": "08:00:27:e2:d0:f4", "version": "4.14.8M" } } ] } } PLAY RECAP ******************************************************************** 192.168.101.50 : ok=10 changed=0 unreachable=0 failed=0 192.168.101.52 : ok=10 changed=0 unreachable=0 failed=0
Arista だけに処理が走りました。
おしまい
plus one
今回は Discovery との連携例として Ansible の Dynamic Inventory を使いましたが、Discovery は Nmap/SNMP だけの超単純な仕組みなので、他の仕組みとの連携も面倒なくいけるんですよな。
例えば、こんなのはよくやっているのではないでしょうか。
- ここで生成した JSON ファイルをロードして
sysDescr
をcase
で分けて、機種に応じた処理- 詳細な inventory 情報取得(シリアル番号とかラインカード/SFP構成とか)
- config 取得 (後述の rancid 方式でもよい)
- discovery ~ config 取得 ~ バージョン管理コマンドも cron で回しておくと、増えた機器が勝手にバックアップ・バージョン管理される
- 各種ミドルウェアの設定ファイル生成(サンプルスクリプトのアウトプットを JSON でなく、設定ファイル形式にするでも)
- rancid
- Ansible
- hosts ファイル
- Dynamic Inventory と連携
- 本項で軽くやったやつ
- 監視ソフト(auto discovery 的な機能がない)
- 機種に応じた自前の plugin を指定して…とかも自動でやれる
- 特定バージョンを対象とした
- OS ファイル転送
- 設定撒き
ptr
が空でsysname
を取得できたものに関して、内部 DNS コンテンツの設定生成(~追加)sysDesc
とsysname
の組み合わせで条件付けて、待機系機器のみ云々
- JSON ファイルに書き出した情報を SQL に放り込んで、WebUI なり API なりを提供
- 前述の内容を実現するのに、踏み台サーバや監視サーバからも inventory 情報を取得したい、って思ったり
- 別に rsync とかで撒いてもよいが
- 実機から取得できる情報には限界があるし、人間が入力・更新したい情報もあるのでは(商用環境だと保守期限とか)
- ありもの製品の WebUI は実運用要件を充たすようにカスタマイズできないから、自前で簡易で運用要件を充たすものを立てたほうが楽、とか
- そういう思いから自前で作り込まれた社内システムとかには、文句たらたらで「ありもののパッケージ使えよ」とか言うのにね
- 前述の内容を実現するのに、踏み台サーバや監視サーバからも inventory 情報を取得したい、って思ったり
所感
- まあ、なんというか「何をマスタ情報にして、他コンポーネントとどういう連携をするか」は環境次第なので、こんな方法もあるよ、ってだけですな
- 超メジャーな Nmap を使った Inventory の生成、なんてのは割とポピュラーな手法で、以下のようなものを使えば同じこと+アルファが出来ます(いずれも内部的には Nmap を使っている模様)
- Open-AudIT
- JSON, xlsx, pdf 形式などで情報をエクスポートできるらしい
- 本項の Discovery レベルの話は全部できそう
- ローレベルディスカバリ | Zabbix 2.2
- SNMP 連携できるディスカバリって点では、物理 NW 機器を一元管理する場合には、これがマッチする気がする
- Open-AudIT
- ただまあ、もっと手軽に…とか、アウトプットの書式を任意に作りたい(他のミドルウェアで使う設定ファイル生成とか)とかのケースでは、使えるのではないでしょうかね
- 生で Nmap 叩いて xml をサクッとパースすればライブラリさえ使う必要ないのですが…
- Nmap 7.0 の新機能を一切触ってないじゃねぇか!
Juniper vSRX(15.1X) を VirtualBox で動かす (original : 2015/12/11)
この記事は某所で 2015/12/11
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。
- Juniper さんの vSRX ダウンロード規約が変わっていそう (詳細は未確認)
.
概要
本項でやること
- KVM、VMware ESX 向けの 60 日間 trial 版が公開されている Juniper vSRX を VirtualBox に入れる
- 公式にはサポートされない手順なので、自己責任で
- JUNOS の基本的な操作は省略(ある程度知っている人向け)
環境情報
- ホスト: Windows7 + VirtualBox 4.3.18
- Juniper vSRX: JUNOS 15.1X49-D15.4
vSRX?
- Juniper SRX の 仮想版
- 以前は Firefly Perimeter として公開されていた
- DPDK 対応などの機能強化を果たして、ほぼ別物として名前も Firefly から vSRX になった
- 参考 2014年03月時点での Firefly Perimeter ロードマップなど
- version が 12.1X となっているものは Firefly で 15.1X となっているものは vSRX
- だが、最近は旧 Firefly も vSRX と呼ばれていたりして、ややこしい
手順
vSRX イメージファイル取得
- Trial 版ダウンロードページ | Juniper または ダウンロードページ | Juniper にアクセス
vSRX VMware Appliance with IDE virtual disk
を選択してmedia-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova
をダウンロード2015/11/23
現在の最新版
ovf 形式にファイル変換
- 取得したovaファイルを ovf 形式にする (以下例では VMwarePlayer などに同梱されている ovftool を使用)
>ovftool.exe media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf Opening OVA source: media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ova The manifest validates Opening OVF target: \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf Writing OVF package: \convert\media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf Transfer Completed Source is signed but could not verify certificate (possibly self-signed) Completed successfully
media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide-disk1.vmdk media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.mf
変換したファイルに小細工(インポートエラーが出ないように)
media-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.mf
ファイルは別ディレクトリに除外しておくmedia-srx-ffp-vsrx-vmdisk-15.1X49-D15.4.ide.ovf
の line 82 を以下のように上書き編集(%iid%
->2
)
編集前
<Item ovf:configuration="4GvRAM"> <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits> <rasd:Description>Memory Size</rasd:Description> <rasd:ElementName>Memory</rasd:ElementName> <rasd:InstanceID>%iid%</rasd:InstanceID> <rasd:ResourceType>4</rasd:ResourceType> <rasd:VirtualQuantity>4096</rasd:VirtualQuantity>
編集後
<Item ovf:configuration="4GvRAM"> <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits> <rasd:Description>Memory Size</rasd:Description> <rasd:ElementName>Memory</rasd:ElementName> <rasd:InstanceID>2</rasd:InstanceID> <rasd:ResourceType>4</rasd:ResourceType> <rasd:VirtualQuantity>4096</rasd:VirtualQuantity>
VirtualBox に ovf をインポート
ファイル
->仮想マシンのインポート
で先の編集した ovf ファイルを指定
- 以降の画面キャプチャはインポート後の設定からとってきたもの
- どうやら
アダプタータイプ
は一回起動したあとは勝手に準仮想化ネットワーク(virtio-net)
にされるようだ アダプター 1
が JUNOS 側から見るとfxp0
(管理用ポート)になる
コンソール画面から初期設定
- 起動する
- 無事に起動できたら、コンソールログインして以下を設定する
# root password の設定(必須) set system root-authentication plain-text-password -> 対話型で入力 # ユーザ作成とパスワード設定 set system login user <username> class super-user set system login user <username> authentication plain-text-password # ssh 有効化 set system services ssh root-login deny set system services ssh protocol-version v2
- 必要に応じて、以下手順でデフォルトのファイアウォールモードからルータモード(いずれも俗称)に切り替える(要再起動)
ssh して状態確認
--- JUNOS 15.1X49-D15.4 built 2015-07-31 02:20:21 UTC kotetsu> kotetsu> show version Model: vSRX Junos: 15.1X49-D15.4 JUNOS Software Release [15.1X49-D15.4] kotetsu> show chassis hardware Hardware inventory: Item Version Part number Serial number Description Chassis 5028f7dddeb5 VSRX Midplane System IO Routing Engine VSRX RE FPC 0 Virtual FPC PIC 0 Virtual GE Power Supply 0 kotetsu> show system license License usage: Licenses Licenses Licenses Expiry Feature name used installed needed Virtual Appliance 1 1 0 59 days Licenses installed: License identifier: E420588955 License version: 4 Software Serial Number: 20150625 Customer ID: vSRX-JuniperEval Features: Virtual Appliance - Virtual Appliance count-down, Original validity: 60 days kotetsu> show configuration | display set set version 15.1X49-D15.4 set system root-authentication encrypted-password "$1$8FV6oxYf$H0vFbn4hEjZEwb748.JxK0" set system login user kotetsu uid 2000 set system login user kotetsu class super-user set system login user kotetsu authentication encrypted-password "$1$w/Ff6i9v$1wW4Wrt8Xy04P8ee63/Hb." set system services ssh root-login deny set system services ssh protocol-version v2 set system services web-management http interface fxp0.0 set system syslog user * any emergency set system syslog file messages any any set system syslog file messages authorization info set system syslog file interactive-commands interactive-commands any set system license autoupdate url https://ae1.juniper.net/junos/key_retrieval set security forwarding-options family mpls mode packet-based set interfaces fxp0 unit 0 family inet address 192.168.101.30/24
おわり
- インストールしただけなので別に…
bagpipe-bgp インストール~簡易動作確認 (original : 2015/11/08)
この記事は某所で 2015/11/08
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。
概要
本項でやること
- bagpipe-bgp をインストールして軽く動作確認するところまでです
- 一般的に OpenStack Neutron と組み合わせて使うようですが、ここでは OpenStack は登場しません
- OSS で手軽に EVPN を試せそう、というのがモチベーションです
環境情報
$ uname -a Linux as65000-l1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
手順
Python 各種パッケージインストール
必要なパッケージをインストール
- reauirements.txt を参照
OS パッケージで入れる例
$ sudo apt-get install python-daemon python-bottle python-netaddr python-pip
bagpipe-bgp インストール
- 公式の Installation に従う
$ cd $ git clone https://github.com/Orange-OpenSource/bagpipe-bgp.git $ cd bagpipe-bgp/ $ git show commit 216fee45fba40663dfd9b48bb31be74f5513f684 Author: Thomas Morin <thomas.morin@orange.com> Date: Fri Aug 28 17:00:53 2015 +0200 devstack plugin fix (dumb omission of "then" in a bash statement...) $ sudo python setup.py install $ ls -al /usr/local/bin/bagpipe-* -rwxr-xr-x 1 root root 175 Nov 8 01:28 /usr/local/bin/bagpipe-bgp -rwxr-xr-x 1 root root 177 Nov 8 01:28 /usr/local/bin/bagpipe-bgp-cleanup -rwxr-xr-x 1 root root 157 Nov 8 01:28 /usr/local/bin/bagpipe-fakerr -rwxr-xr-x 1 root root 168 Nov 8 01:28 /usr/local/bin/bagpipe-looking-glass -rwxr-xr-x 1 root root 166 Nov 8 01:28 /usr/local/bin/bagpipe-rest-attach $ bagpipe-bgp --help Usage: bagpipe-bgp [options] (see --help) Options: -h, --help show this help message and exit --config-file=CONFIGFILE Set BGP component configuration file path --log-file=LOGFILE Set logging configuration file path --no-daemon Do not daemonize
bagpipe-bgp service 登録(~自動起動設定)
$ cd bagpipe-bgp/ $ ./install_bagpipe_bgp.sh *** WARNING: This script must be run as root *** $ sudo ./install_bagpipe_bgp.sh $ sudo service bagpipe-bgp status BGP component is running.
- 自動起動したい場合は、サンプルが同梱されているので、これを配置すればよかろう(ここでは未実施)
$ ls -al bagpipe-bgp/etc/init.d/ total 16 drwxrwxr-x 2 kotetsu kotetsu 4096 Nov 8 01:25 . drwxrwxr-x 3 kotetsu kotetsu 4096 Nov 8 01:25 .. -rwxrwxr-x 1 kotetsu kotetsu 2518 Nov 8 01:25 bagpipe-bgp -rwxrwxr-x 1 kotetsu kotetsu 1545 Nov 8 01:25 bagpipe-fakerr
bagpipe-bgp 設定ファイルの編集
メイン設定ファイル (/etc/bagpipe-bgp/bgp.conf)
/etc/bagpipe-bgp/bgp.conf
- ネットワーク環境に合わせて
[BGP]
の項目を編集- iBGP しか使えないことに注意
$ ls -al /etc/bagpipe-bgp/ total 24 drwxr-xr-x 2 root root 4096 Nov 8 01:57 . drwxr-xr-x 83 root root 4096 Nov 8 01:57 .. -rw-r--r-- 1 root root 3099 Nov 8 01:57 bgp.conf -rw-rw-r-- 1 root root 3099 Nov 8 01:25 bgp.conf.template -rw-r--r-- 1 root root 1615 Nov 8 01:57 log.conf -rw-rw-r-- 1 root root 1615 Nov 8 01:25 log.conf.template $ cat /etc/bagpipe-bgp/bgp.conf [BGP] local_address=10.0.1.2 peers=10.0.1.1 my_as=65000 enable_rtc=False (略) $ diff /etc/bagpipe-bgp/bgp.conf /etc/bagpipe-bgp/bgp.conf.template 2,5c2,5 < local_address=10.0.1.2 < peers=10.0.1.1 < my_as=65000 < enable_rtc=False --- > local_address=192.168.100.177 > peers=192.168.0.101 > my_as=64512 > enable_rtc=True
log 出力設定ファイル (/etc/bagpipe-bgp/log.conf)
/etc/bagpipe-bgp/log.conf
[logger_engine]
だけ出力レベルを WARNING からDEBUG
に変更(様子を観察するため)- デフォルトでは
/var/log/bagpipe-bgp/bagpipe-bgp.log
に出力される
$ cat /etc/bagpipe-bgp/log.conf (略) [logger_engine] level=DEBUG propagate=0 qualname=bagpipe.bgp.engine handlers=rotatingFile parent=bgp (略) $ diff /etc/bagpipe-bgp/log.conf /etc/bagpipe-bgp/log.conf.template 25c25 < level=DEBUG --- > level=WARNING
bagpipe-bgp 起動~状態確認
ここからの例では起動の前に、適当な iBGP neighbor を用意しておきます。
起動
service
で普通に扱うだけ- 要 root 権限
$ sudo service bagpipe-bgp start Starting BGP component... $ sudo service bagpipe-bgp restart Restarting BGP component... stopping.........starting $ sudo service bagpipe-bgp status BGP component is running.
ログ確認
- デフォルトのログ設定ではさほど出力されないが、前述の通り
[logger_engine]
の level を DEBUG に変えたので、やたら出ている
$ more /var/log/bagpipe-bgp/bagpipe-bgp.log 2015-11-08 12:18:41,772 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Re-initiating 2015-11-08 12:18:41,773 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Worker BGP-10.0.1.1 BGP FSM transitioned from 'OpenSent' to 'Idle' state 2015-11-08 12:18:41,773 BGP-10.0.1.1 bagpipe.bgp.engine.bgp_manager DEBUG push cleanup event for worker BGP-10.0.1.1 to RouteTableManager 2015-11-08 12:18:41,773 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager received event WorkerCleanupEvent:BGP-10.0.1.1 2015-11-08 12:18:41,774 RouteTableManager bagpipe.bgp.engine.route_table_manager INFO Cleanup for worker BGP-10.0.1.1 2015-11-08 12:18:41,774 RouteTableManager bagpipe.bgp.engine.route_table_manager INFO (we had no trace of Worker BGP-10.0.1.1 in _source2entries) 2015-11-08 12:18:41,774 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager queue size: 0 2015-11-08 12:18:41,774 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager waiting on queue 2015-11-08 12:18:51,788 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Worker BGP-10.0.1.1 BGP FSM transitioned from 'Idle' to 'Connect' state 2015-11-08 12:18:51,788 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Initiate ExaBGP connection to 10.0.1.1 from 10.0.1.2 2015-11-08 12:18:51,790 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Instantiate ExaBGP Protocol 2015-11-08 12:18:51,791 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Send open: [OPEN version=4 asn=65000 hold_time=180 router_id=10.0.1.2 capabilities=[Multiprotocol IPv4 mpls-vpn L2VPN evpn, 4Bytes AS 65000]] 2015-11-08 12:18:51,792 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Worker BGP-10.0.1.1 BGP FSM transitioned from 'Connect' to 'OpenSent' state 2015-11-08 12:18:51,792 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Wait for open... 2015-11-08 12:18:51,793 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Read message: OPEN version=4 asn=65000 hold_time=90 router_id=192.168.101.170 capabilities=[Multiprotocol L2VPN evpn, Route Refresh, 4Bytes AS 65000] 2015-11-08 12:18:51,793 BGP-10.0.1.1 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO changing thread name from BGP-10.0.1.1 to BGP-x192.168.101.170, based on the router-id advertized in Open (different from peerAddress == 10.0.1.1) 2015-11-08 12:18:51,793 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 WARNING Peer does not advertise (IPv4,mpls-vpn) capability 2015-11-08 12:18:51,794 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Family (L2VPN,evpn) successfully negotiated with peer 10.0.1.1 2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 WARNING Peer does not advertise (IPv4,rtc) capability 2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Worker BGP-10.0.1.1/192.168.101.170 BGP FSM transitioned from 'OpenSent' to 'OpenConfirm' state 2015-11-08 12:18:51,795 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Init sendKA timer (30s) 2015-11-08 12:18:51,796 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Init Keepalive reception timer (90s) 2015-11-08 12:18:51,797 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Sending 19 bytes on socket to peer 10.0.1.1 2015-11-08 12:18:51,797 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Start receive loop 2015-11-08 12:18:51,798 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 INFO Worker BGP-10.0.1.1/192.168.101.170 BGP FSM transitioned from 'OpenConfirm' to 'Established' state 2015-11-08 12:18:51,798 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.worker INFO Subscribe: Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170 2015-11-08 12:18:51,799 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.bgp_manager DEBUG bagpipe.bgp.engine.bgp_manager.Manager method _routeEventSubscribe called with arguments (Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170,) {} 2015-11-08 12:18:51,799 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager received event Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170 2015-11-08 12:18:51,799 RouteTableManager bagpipe.bgp.engine.route_table_manager INFO workerSubscribes: Subscription [L2VPN/evpn,*] by BGP-10.0.1.1/192.168.101.170 2015-11-08 12:18:51,800 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager queue size: 0 2015-11-08 12:18:51,800 RouteTableManager bagpipe.bgp.engine.route_table_manager DEBUG RouteTableManager waiting on queue 2015-11-08 12:18:51,800 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Keepalive received 2015-11-08 12:18:51,801 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Init Keepalive reception timer (90s) 2015-11-08 12:18:51,800 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Received message: KEEPALIVE 2015-11-08 12:19:21,797 BGP-10.0.1.1/192.168.101.170:sendKATimer bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Trigger send KeepAlive 2015-11-08 12:19:21,798 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Sending 19 bytes on socket to peer 10.0.1.1 2015-11-08 12:19:21,798 BGP-10.0.1.1/192.168.101.170:sendKATimer bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Init sendKA timer (30s) 2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170:receiveLoop bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Received message: KEEPALIVE 2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Keepalive received 2015-11-08 12:19:21,800 BGP-10.0.1.1/192.168.101.170 bagpipe.bgp.engine.exabgp_peer_worker.10-0-1-1 DEBUG Init Keepalive reception timer (90s)
状態確認(bagpipe-looking-glass)
$ bagpipe-looking-glass bgp peers 10.0.1.1 protocol: state: Established hold_time: 90 last_transition_time: 2015-11-08 12:18:51 previous_state: (OpenConfirm) name: BGP-10.0.1.1/192.168.101.170 rtc: active: False enabled: False as_info: peer: 65000 local: 65000 internals: event queue length: 0 subscriptions: * match:L2VPN/evpn,* peeringAddresses: peerAddress: 10.0.1.1 localAddress: 10.0.1.2 routes: (...) active_families: * (L2VPN, evpn) logs: (...)
- bagpipe は Openstack Neutron components あたりとの連携して使うのが一般的のようで RESTAPI 制御も可能
- 適当に別のノードから突いた一例
$ curl -s http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1 | python -m json.tool
{ "active_families": [ "(L2VPN, evpn)" ], "as_info": { "local": 65000, "peer": 65000 }, "internals": { "event queue length": 0, "subscriptions": [ "match:L2VPN/evpn,*" ] }, "logs": { "href": "http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1/logs" }, "name": "BGP-10.0.1.1/192.168.101.170", "peeringAddresses": { "localAddress": "10.0.1.2", "peerAddress": "10.0.1.1" }, "protocol": { "hold_time": 90, "last_transition_time": "2015-11-08 12:18:51", "previous_state": "(OpenConfirm)", "state": "Established" }, "routes": { "href": "http://192.168.101.171:8082/looking-glass/bgp/peers/10.0.1.1/routes" }, "rtc": { "active": false, "enabled": false } }
おわり
- インストールしただけなので、特に…
GoBGP インストール~簡易動作確認 (original : 2015/11/08)
この記事は某所で 2015/11/08
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。
概要
本項でやること
- gobgp をインストール~起動~適当なノードとiBGP Peeringするところまでです
- gobgp 公式 Getting started に従います
環境情報
$ uname -a Linux as65000-s1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ uname -r 3.19.0-25-generic $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
構築手順
Go インストール
- 公式 Getting Started に従いインストール
$ wget --no-check-certificate https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz $ ls -al total 76060 drwxrwxr-x 2 kotetsu kotetsu 4096 Nov 7 20:53 . drwxr-xr-x 5 kotetsu kotetsu 4096 Nov 7 20:49 .. -rw-rw-r-- 1 kotetsu kotetsu 77875767 Sep 9 13:20 go1.5.1.linux-amd64.tar.gz $ sudo tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz $ ls -al /usr/local/go/ total 136 drwxr-xr-x 11 root root 4096 Sep 9 10:37 . drwxr-xr-x 11 root root 4096 Nov 7 20:57 .. drwxr-xr-x 2 root root 4096 Sep 9 10:24 api -rw-r--r-- 1 root root 21146 Sep 9 10:24 AUTHORS drwxr-xr-x 2 root root 4096 Sep 9 10:37 bin drwxr-xr-x 4 root root 4096 Sep 9 10:37 blog -rw-r--r-- 1 root root 1107 Sep 9 10:24 CONTRIBUTING.md -rw-r--r-- 1 root root 28953 Sep 9 10:24 CONTRIBUTORS drwxr-xr-x 8 root root 4096 Sep 9 10:24 doc -rw-r--r-- 1 root root 1150 Sep 9 10:24 favicon.ico drwxr-xr-x 3 root root 4096 Sep 9 10:24 lib -rw-r--r-- 1 root root 1479 Sep 9 10:24 LICENSE drwxr-xr-x 13 root root 4096 Sep 9 10:37 misc -rw-r--r-- 1 root root 1303 Sep 9 10:24 PATENTS drwxr-xr-x 7 root root 4096 Sep 9 10:37 pkg -rw-r--r-- 1 root root 1519 Sep 9 10:24 README.md -rw-r--r-- 1 root root 26 Sep 9 10:24 robots.txt drwxr-xr-x 43 root root 4096 Sep 9 10:24 src drwxr-xr-x 16 root root 12288 Sep 9 10:36 test -rw-r--r-- 1 root root 7 Sep 9 10:24 VERSION $ mkdir $HOME/go $ echo 'export GOPATH=$HOME/go' >> $HOME/.profile $ echo 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin' >> $HOME/.profile $ source $HOME/.profile $ env | grep PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/go/bin:/usr/local/go/bin:/usr/local/go/bin:/home/kotetsu/go/bin GOPATH=/home/kotetsu/go $ go version go version go1.5.1 linux/amd64
gobgp インストール
- インストールに使う
go get
コマンドに必要なパッケージを適宜インストール GoGetTools
$ sudo apt-get update $ sudo apt-get install git mercurial
- gobgp Getting started に従いインストール
$ go get github.com/osrg/gobgp/gobgpd warning: code.google.com is shutting down; import path code.google.com/p/go-uuid/uuid will stop working $ go get github.com/osrg/gobgp/gobgp $ ls -al ~/go/bin/ total 29056 drwxrwxr-x 2 kotetsu kotetsu 4096 Nov 7 21:43 . drwxrwxr-x 5 kotetsu kotetsu 4096 Nov 7 21:36 .. -rwxr-xr-x 1 kotetsu kotetsu 13801080 Nov 7 21:43 gobgp -rwxr-xr-x 1 kotetsu kotetsu 15939792 Nov 7 21:36 gobgpd
gobgpd.conf 作成
- 適当なディレクトリに config ファイルを作成して、適当な設定を書き込む
- 以下例では iBGP しか設定していないが、eBGP も動く
$ mkdir ~/gobgp $ touch ~/gobgp/gobgpd.conf $ cat ~/gobgp/gobgpd.conf [Global] [Global.GlobalConfig] As = 65000 RouterId = "192.168.101.170" [Neighbors] [[Neighbors.NeighborList]] [Neighbors.NeighborList.NeighborConfig] NeighborAddress = "10.0.1.2" PeerAs = 65000 [Neighbors.NeighborList.AfiSafis] [[Neighbors.NeighborList.AfiSafis.AfiSafiList]] AfiSafiName = "l2vpn-evpn" [[Neighbors.NeighborList]] [Neighbors.NeighborList.NeighborConfig] NeighborAddress = "10.0.2.2" PeerAs = 65000 [Neighbors.NeighborList.AfiSafis] [[Neighbors.NeighborList.AfiSafis.AfiSafiList]] AfiSafiName = "l2vpn-evpn"
gobgpd 起動
- root 権限で実行しないと、IP アドレス bind に失敗する
- デフォルトではフォアグラウンドで動く
$ gobgpd -f ~/gobgp/gobgpd.conf {"level":"info","msg":"gobgpd started","time":"2015-11-07T22:11:54+09:00"} {"level":"info","msg":"finished reading the config file","time":"2015-11-07T22:11:54+09:00"} {"level":"info","msg":"listen tcp4 :179: bind: permission denied","time":"2015-11-07T22:11:54+09:00"} {"level":"info","msg":"listen tcp6 :179: bind: permission denied","time":"2015-11-07T22:11:54+09:00"} {"level":"fatal","msg":"can't listen either v4 and v6","time":"2015-11-07T22:11:54+09:00"} $ sudo cat /etc/sudoers | grep Defaults Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults exempt_group="kotetsu" $ sudo -E gobgpd -f ~/gobgp/gobgpd.conf & [1] 8242 kotetsu@as65000-1:~$ {"level":"info","msg":"gobgpd started","time":"2015-11-07T22:28:37+09:00"} {"level":"info","msg":"finished reading the config file","time":"2015-11-07T22:28:37+09:00"} {"level":"info","msg":"Peer 10.0.1.2 is added","time":"2015-11-07T22:28:37+09:00"} {"level":"info","msg":"Peer 10.0.2.2 is added","time":"2015-11-07T22:28:37+09:00"} $ ps au | grep [g]o root 8242 0.0 0.8 64956 4052 pts/1 S Nov07 0:00 sudo -E gobgpd -f /home/kotetsu/gobgp/gobgpd.conf root 8243 0.0 2.1 139396 11004 pts/1 Sl Nov07 0:01 gobgpd -f /home/kotetsu/gobgp/gobgpd.conf $ gobgp neighbor --help Usage: gobgp neighbor [flags] Flags: -a, --address-family="": address family -t, --transport="": specifying a transport protocol Global Flags: --bash-cmpl-file="gobgp_completion.bash": bash cmpl filename -d, --debug[=false]: use debug -c, --gen-cmpl[=false]: generate completion file -u, --host="127.0.0.1": host -j, --json[=false]: use json format to output format -p, --port=8080: port -q, --quiet[=false]: use quiet
動作確認
適当な neighbor を用意して、動作確認(勿論 gobgp 同士でも可能)
- neighbor の Peer 確立、切断時などにはデフォルトでは標準出力に以下のような出力
{"Key":"10.0.1.2","Reason":"Peer closed the session","State":6,"Topic":"Peer","level":"info","msg":"Peer Down","time":"2015-11-08T12:18:41+09:00"} {"Key":"10.0.1.2","Topic":"Peer","level":"warning","msg":"Closed an accepted connection","time":"2015-11-08T12:18:41+09:00"} {"Key":"10.0.1.2","State":5,"Topic":"Peer","level":"info","msg":"Peer Up","time":"2015-11-08T12:18:51+09:00"}
gobgp
各種コマンドで状態確認可能- 以下公式のドキュメント
$ gobgp neighbor Peer AS Up/Down State |#Advertised Received Accepted 10.0.1.2 65000 02:07:33 Establ | 0 0 0 10.0.2.2 65000 never Active | 0 0 0 $ gobgp neighbor 10.0.1.2 BGP neighbor is 10.0.1.2, remote AS 65000 BGP version 4, remote router ID 10.0.1.2 BGP state = BGP_FSM_ESTABLISHED, up for 02:07:40 BGP OutQ = 0, Flops = 0 Hold time is 0, keepalive interval is 30 seconds Configured hold time is 90, keepalive interval is 30 seconds Neighbor capabilities: BGP_CAP_MULTIPROTOCOL: RF_EVPN: advertised and received RF_IPv4_VPN: received RF_RTC_UC: received BGP_CAP_ROUTE_REFRESH: advertised BGP_CAP_FOUR_OCTET_AS_NUMBER: advertised and received Message statistics: Sent Rcvd Opens: 20 20 Notifications: 0 0 Updates: 0 0 Keepalives: 392 392 Route Refesh: 0 0 Discarded: 0 0 Total: 412 412 Route statistics: Advertised: 0 Received: 0 Accepted: 0
おまけ CLI's tab 補完(bash 用) 導入
- 'gobgp' 各種コマンドを Tab 補完できるようになるので、入れておくと便利
$ cd ~/gobgp $ wget https://raw.githubusercontent.com/osrg/gobgp/master/tools/completion/gobgp-completion.bash $ ls -al total 56 drwxrwxr-x 2 kotetsu kotetsu 4096 Nov 7 23:32 . drwxr-xr-x 6 kotetsu kotetsu 4096 Nov 7 22:07 .. -rw-rw-r-- 1 kotetsu kotetsu 41832 Nov 7 23:32 gobgp-completion.bash -rw-rw-r-- 1 kotetsu kotetsu 354 Nov 7 22:10 gobgpd.conf $ source ~/gobgp/gobgp-completion.bash
おわり
- インストールしただけなので別に…
Arista EOS の python コード読み始め (original : 2015/05/06)
この記事は某所で 2015/05/06
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。
概要
本項でやること
EOS の読んでおきたいコードをメインに、ディレクトリ構造を追いました。本項単体では何も得られない僕向けの内容です。マニュアルで得られない情報をコードやコメントから読み取るのって、楽しいんですよね(死んだ魚の目)。
以下のようなことをやるための前戯の意味もあります。
- 自分だけの CLI コマンドを実装( Understanding EOS CLI implementation 参照)
- EOS を介さずに sysdb を直接突く (後述)
- RPM をインストールして EOS の extension として動かして機能拡張( Packaging and installing EOS extensions 参照)
sysdb に関しては、直接突くための SDK が公式で公開されているのですが、EOS 側にインストール必要な rpm が Guest アカウントでは Download 権限がなかったです(2015/05/03 時点)。
そこで EOS の python コードを読めば(その中で sysdb を呼び出している筈なので)、SDK がなくても突けるのではないかと考えました(未施行)。
Arista EOS?
Arista EOS 自体については、以下の本をオススメしときますね。
Arista Warrior: A Real-World Guide to Understanding Arista Switches and EOS
- 作者: Gary A. Donahue
- 出版社/メーカー: O'Reilly Media
- 発売日: 2012/10/27
- メディア: ペーパーバック
- この商品を含むブログを見る
環境
2015/04 にリリースされたばかりの 4.15.0F が、vEOS にも早速来ていました。ウヒョー!
- Aboot-veos:Aboot-veos-2.1.0
- OS:vEOS-4.15.0F
- CPU:1core
- Memory:1024MB
サマリ
path | 内容 |
---|---|
/mnt/flash | OS ファイルや startup-config ファイルが配置されているディレクトリ |
/mnt/flash/.extensions | extension として読み込ませる rpm を配置するディレクトリ |
/usr/bin/[A-Z]* | Arista 固有 agent 群 |
/usr/lib/python2.7/site-packages/*.py | EOS コア系処理 |
/usr/lib/python2.7/site-packages/SysdbPlugin/*.py | Sysdb 構成 |
/usr/lib/python2.7/site-packages/CliPlugin/*.py | EOS CLI コマンドの定義をしている python スクリプト群 |
/usr/lib/python2.7/site-packages/MlagPlugin/*.py | MLAG 関係の sysdb 読み書きをしている python スクリプト群 |
なので /usr/lib/python2.7/site-packages/
配下を固めて手元に持ってきて、適当なエディタにぶち込んで読んでます。
詳細
EOS CLI から bash に降りる
こんな感じで。
veos-dev[20150505_22:12:16]>en veos-dev[20150505_22:12:25]#bash Arista Networks EOS shell [kotetsu@veos-dev ~]$
root 化が必要な時には。
[kotetsu@veos-dev ~]$ sudo -s bash-4.1#
OS コマンドで構成情報を探る
[kotetsu@veos-dev ~]$ uname -a Linux veos-dev 3.4.43.Ar-2374134.4150F #1 SMP PREEMPT Thu Apr 9 14:38:10 PDT 2015 x86_64 x86_64 x86_64 GNU/Linux [kotetsu@veos-dev ~]$
いつも思うのですが memory 1GB だといっぱいいっぱいなので、2GBくらい割当てた方が良いかもです。
[kotetsu@veos-dev ~]$ free total used free shared buffers cached Mem: 996096 957036 39060 0 9724 370736 -/+ buffers/cache: 576576 419520 Swap: 0 0 0 [kotetsu@veos-dev ~]$
Arista 独自のプロセスは大文字で始まるものが多いみたいです。
[kotetsu@veos-dev ~]$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 22:09 ? 00:00:01 /sbin/init root 2 0 0 22:09 ? 00:00:00 [kthreadd] root 3 2 0 22:09 ? 00:00:00 [ksoftirqd/0] root 4 2 0 22:09 ? 00:00:00 [kworker/0:0] root 6 2 0 22:09 ? 00:00:00 [migration/0] root 8 2 0 22:09 ? 00:00:00 [khelper] root 9 2 0 22:09 ? 00:00:00 [netns] root 166 2 0 22:09 ? 00:00:00 [sync_supers] root 168 2 0 22:09 ? 00:00:00 [bdi-default] root 170 2 0 22:09 ? 00:00:00 [kblockd] root 177 2 0 22:09 ? 00:00:00 [ata_sff] root 187 2 0 22:09 ? 00:00:00 [khubd] root 210 2 0 22:09 ? 00:00:00 [dst_gc_task] root 295 2 0 22:09 ? 00:00:00 [arp_cache-prd] root 296 2 0 22:09 ? 00:00:00 [icmp_unreachabl] root 297 2 0 22:09 ? 00:00:00 [rpciod] root 300 2 0 22:09 ? 00:00:00 [ecc_log_wq] root 309 2 0 22:09 ? 00:00:00 [khungtaskd] root 310 2 0 22:09 ? 00:00:00 [khungtaskd2] root 314 2 0 22:09 ? 00:00:02 [kswapd0] root 315 2 0 22:09 ? 00:00:00 [fsnotify_mark] root 316 2 0 22:09 ? 00:00:00 [nfsiod] root 317 2 0 22:09 ? 00:00:00 [crypto] root 323 2 0 22:09 ? 00:00:00 [pcielwd] root 362 2 0 22:09 ? 00:00:00 [scsi_eh_0] root 365 2 0 22:09 ? 00:00:00 [scsi_eh_1] root 368 2 0 22:09 ? 00:00:00 [kworker/u:2] root 369 2 0 22:09 ? 00:00:00 [kworker/u:3] root 433 2 0 22:09 ? 00:00:00 [edac-poller] root 465 2 0 22:09 ? 00:00:00 [ndisc_cache-prd] root 469 2 0 22:09 ? 00:00:00 [deferwq] root 605 2 2 22:09 ? 00:00:08 [loop0] root 617 2 0 22:09 ? 00:00:00 [flush-8:0] root 886 1 0 22:09 ? 00:00:00 /sbin/udevd -d root 1006 2 0 22:09 ? 00:00:01 [kworker/0:2] root 1216 1 0 22:09 ? 00:00:00 python /usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/local.new . && root 1218 1216 0 22:09 pts/0 00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move . root 1228 1 0 22:09 ? 00:00:00 python /usr/bin/inotifyrun -c pax -x sv4cpio -O -w -f /mnt/flash/persist/sys.new . && mv root 1229 1228 0 22:09 pts/1 00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move . root 1241 1 0 22:09 ? 00:00:00 python /usr/bin/inotifyrun -c shred --exact --iterations=1 /mnt/flash/persist/secure; pa root 1243 1241 0 22:09 pts/2 00:00:00 inotifywait -m -r -e modify -e create -e delete -e attrib -e move . root 1249 2 0 22:09 ? 00:00:00 [watchdog/0] root 1343 1 0 22:09 ? 00:00:00 watchdog root 1344 1343 0 22:09 ? 00:00:00 wdog-cld root 1400 1 0 22:09 ? 00:00:00 /usr/bin/EosOomAdjust root 1404 1 0 22:09 ? 00:00:00 /usr/sbin/mcelog --daemon --no-syslog --logfile /var/log/mcelog root 1415 2 0 22:09 ? 00:00:00 [kbfd_v4v6_rx] root 1416 2 0 22:09 ? 00:00:00 [kbfd_v4v6_echo] root 1417 2 0 22:09 ? 00:00:00 [kbfd_tx] root 1418 2 0 22:09 ? 00:00:00 [kbfd_rx_expire] root 1419 2 0 22:09 ? 00:00:00 [kbfd_tx_reset] root 1420 2 0 22:09 ? 00:00:00 [kbfd_echo_tx] root 1421 2 0 22:09 ? 00:00:00 [kbfd_echo_rx_ex] root 1422 2 0 22:09 ? 00:00:00 [kbfd_echo_tx_re] root 1423 2 0 22:09 ? 00:00:00 [kbfd_echo_exp_r] root 1462 1 0 22:09 ? 00:00:00 crond root 1516 1 0 22:10 ? 00:00:00 netnsd-watcher -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1518 1516 0 22:10 ? 00:00:00 netnsd-server -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1526 1 0 22:10 ? 00:00:00 ProcMgr-mast -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1527 1526 0 22:10 ? 00:00:01 ProcMgr-work -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1528 1527 2 22:10 ? 00:00:08 Sysdb -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1530 1527 0 22:10 ? 00:00:00 Fru -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1531 1527 0 22:10 ? 00:00:01 Launcher -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1630 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Lldp root 1631 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/LacpTxAgent root 1632 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/PortSec root 1633 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Bfd root 1634 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Ipv6RouterAdvt root 1636 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1637 1636 0 22:10 ? 00:00:00 Lldp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1639 1527 0 22:10 ? 00:00:01 SuperServer -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1640 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/PimReg root 1641 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1643 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1644 1641 0 22:10 ? 00:00:00 PortSec -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1645 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Ira root 1646 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/LedPolicy root 1647 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1648 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1649 1643 0 22:10 ? 00:00:00 LacpTxAgent -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1651 1647 0 22:10 ? 00:00:00 Bfd -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1653 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1655 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/KernelMfib root 1656 1527 0 22:10 ? 00:00:00 EventMon -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1657 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/AgentMonitor root 1659 1648 0 22:10 ? 00:00:00 Ipv6RouterAd -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1660 1653 0 22:10 ? 00:00:00 PimReg -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1663 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1664 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1665 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Msdp root 1667 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Fhrp root 1668 1527 0 22:10 ? 00:00:00 Aaa -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1669 1663 0 22:10 ? 00:00:00 Ira -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1670 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1671 1664 0 22:10 ? 00:00:00 LedPolicy -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1672 1670 0 22:10 ? 00:00:00 KernelMfib -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1674 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/StpTopology root 1676 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1678 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/PowerManager root 1681 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1683 1676 0 22:10 ? 00:00:02 AgentMonitor -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1685 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1687 1681 0 22:10 ? 00:00:00 Msdp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1688 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1689 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Mpls root 1691 1685 0 22:10 ? 00:00:00 StpTopology -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1692 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1693 1688 0 22:10 ? 00:00:00 Fhrp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1694 1692 0 22:10 ? 00:00:00 PowerManager -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1695 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Dot1x root 1696 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Stp root 1698 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/IgmpHostProxy root 1699 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Acl root 1701 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1702 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1703 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1704 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/PimBsr root 1705 1702 0 22:10 ? 00:00:00 Mpls -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1706 1701 0 22:10 ? 00:00:00 Dot1x -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1707 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Thermostat root 1708 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Arp root 1709 1703 0 22:10 ? 00:00:00 Stp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1710 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Qos root 1711 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Pim root 1712 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/LoopProtect root 1715 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Mirroring root 1716 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/NetworkTopology root 1717 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Ebra root 1718 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/KernelFib root 1720 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/TopoAgent root 1721 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1722 1721 0 22:10 ? 00:00:00 IgmpHostProx -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1723 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1724 1527 0 22:10 ? 00:00:00 IgmpSnooping -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1725 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1726 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1727 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1728 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1729 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1730 1725 0 22:10 ? 00:00:00 Thermostat -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1731 1726 0 22:10 ? 00:00:00 PimBsr -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1732 1727 0 22:10 ? 00:00:00 Pim -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1733 1723 0 22:10 ? 00:00:00 Acl -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1734 1728 0 22:10 ? 00:00:00 Arp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1735 1527 0 22:10 ? 00:00:00 netns --dlopen procmgr /usr/bin/Igmp root 1736 1729 0 22:10 ? 00:00:00 LoopProtect -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1737 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1738 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1739 1738 0 22:10 ? 00:00:00 NetworkTopol -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1740 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1741 1740 0 22:10 ? 00:00:00 Qos -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1743 1737 0 22:10 ? 00:00:00 Mirroring -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1744 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1745 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1747 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1748 1744 0 22:10 ? 00:00:00 Ebra -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1749 1745 0 22:10 ? 00:00:00 KernelFib -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1751 1518 0 22:10 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1752 1751 0 22:10 ? 00:00:00 Igmp -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1753 1747 0 22:10 ? 00:00:00 TopoAgent -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1758 1527 0 22:10 ? 00:00:00 PhyEthtool -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 1963 1 0 22:10 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 root 2209 1 0 22:10 ? 00:00:00 /usr/sbin/sshd root 2275 1 0 22:10 ? 00:00:00 /usr/bin/conlogd root 2277 2275 0 22:10 ? 00:00:00 sh -c /usr/bin/tail -n 0 --retry --follow=name --pid=2275 /var/log/eos-console | sed 's/ root 2278 2277 0 22:10 ? 00:00:00 /usr/bin/tail -n 0 --retry --follow=name --pid=2275 /var/log/eos-console root 2279 2277 0 22:10 ? 00:00:00 sed s/\(.*\)/\1\r/ root 2296 1 0 22:10 tty1 00:00:00 /sbin/mingetty /dev/tty1 root 2298 1 0 22:10 tty2 00:00:00 /sbin/mingetty /dev/tty2 root 2302 1 0 22:10 tty3 00:00:00 /sbin/mingetty /dev/tty3 root 2304 1 0 22:10 tty4 00:00:00 /sbin/mingetty /dev/tty4 root 2307 1 0 22:10 tty5 00:00:00 /sbin/mingetty /dev/tty5 root 2309 1 0 22:10 tty6 00:00:00 /sbin/mingetty /dev/tty6 root 2365 1527 2 22:11 ? 00:00:05 /usr/sbin/ribd -N root 2377 1527 1 22:11 ? 00:00:04 FastClid -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2415 886 0 22:11 ? 00:00:00 /sbin/udevd -d root 2416 886 0 22:11 ? 00:00:00 /sbin/udevd -d root 2418 1527 0 22:11 ? 00:00:02 Etba -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2425 1527 0 22:11 ? 00:00:01 Lag+LacpAgen -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2428 1527 0 22:11 ? 00:00:00 netns --dlopen procmgr /usr/bin/Pimsm root 2430 1518 0 22:11 ? 00:00:00 netnsd-session -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2431 2430 0 22:11 ? 00:00:00 Pimsm -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2487 1527 2 22:11 ? 00:00:05 CliSessionMg -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s root 2520 2209 0 22:12 ? 00:00:00 sshd: kotetsu [priv] kotetsu 2539 2520 0 22:12 ? 00:00:00 sshd: kotetsu@pts/3 kotetsu 2542 2539 0 22:12 pts/3 00:00:00 FastCli root 2545 2377 0 22:12 pts/4 00:00:00 FastClid -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s kotetsu 2549 2545 0 22:12 pts/4 00:00:01 Cli [interac -d -i --dlopen -p -f -l libLoadDynamicLibs.so procmgr libProcMgrSetup.s kotetsu 2565 2549 0 22:12 pts/4 00:00:00 /bin/bash -l root 2859 2 0 22:14 ? 00:00:00 [kworker/0:1] root 2980 1 0 22:15 ttyS0 00:00:00 /sbin/mingetty --noclear /dev/ttyS0 kotetsu 2986 2565 0 22:15 pts/4 00:00:00 ps -ef [kotetsu@veos-dev ~]$
ディレクトリ探索
[kotetsu@veos-dev ~]$ ls -alh /mnt/flash total 448M drwxrwx--- 6 root eosadmin 4.0K May 5 22:09 . drwxr-xr-x 3 root root 100 May 5 22:09 .. -r-xr-x--- 1 root eosadmin 224M May 3 15:48 .boot-image.swi drwxrwx--- 2 root eosadmin 4.0K May 3 15:48 .extensions -rwxrwx--- 1 root eosadmin 24 Apr 20 18:40 boot-config drwxrwx--- 2 root eosadmin 4.0K May 3 15:48 debug drwxrwx--- 2 root eosadmin 4.0K May 5 22:10 persist drwxrwx--- 3 root eosadmin 4.0K May 3 15:54 schedule -rwxrwx--- 1 root eosadmin 466 May 4 23:36 startup-config -rwxrwx--- 1 root eosadmin 224M Apr 20 18:40 vEOS-lab.swi
[kotetsu@veos-dev ~]$ which Cli /usr/bin/Cli [kotetsu@veos-dev ~]$ [kotetsu@veos-dev ~]$ ls -alh /usr/bin/[A-Z]* -rwxr-xr-x 1 root root 148 Apr 16 01:53 /usr/bin/Aaa -rwxr-xr-x 1 root root 528 Apr 16 01:53 /usr/bin/AaaFlushAccounting -rwxr-xr-x 1 root root 2.5K Apr 16 01:53 /usr/bin/AaaSetRootPassword lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Acl -> /usr/lib/libAclLoader.so lrwxrwxrwx 1 root root 33 Apr 21 01:39 /usr/bin/AgentMonitor -> /usr/lib/libAgentMonitorLoader.so -rwxr-xr-x 1 root root 1.4K Apr 16 04:18 /usr/bin/AleFibCliDiffUtil -rwxr-xr-x 1 root root 3.9K Apr 10 17:09 /usr/bin/ArSchedule lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Arp -> /usr/lib/libArpLoader.so lrwxrwxrwx 1 root root 34 Apr 21 01:39 /usr/bin/ArpInspection -> /usr/lib/libArpInspectionLoader.so lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Bfd -> /usr/lib/libBfdLoader.so -rwxr-xr-x 1 root root 156 Apr 10 17:31 /usr/bin/BootMgr lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Cdp -> /usr/lib/libCdpLoader.so -rwxr-xr-x 1 root root 3.1K Apr 10 17:18 /usr/bin/Cli -rwxr-xr-x 1 root root 400 Apr 10 17:18 /usr/bin/CliSessionMgr -rwxr-xr-x 1 root root 2.9K Apr 10 17:09 /usr/bin/CombineHeapDumps -rwxr-xr-x 1 root root 1.8K Apr 10 17:18 /usr/bin/ConfigureReplace lrwxrwxrwx 1 root root 42 Apr 21 01:39 /usr/bin/ControllerDebugClient -> /usr/lib/libControllerDebugClientLoader.so lrwxrwxrwx 1 root root 42 Apr 21 01:39 /usr/bin/ControllerDebugServer -> /usr/lib/libControllerDebugServerLoader.so -rwxr-xr-x 1 root root 15K Apr 10 18:43 /usr/bin/ControllerOob -rwxr-xr-x 1 root root 38K Apr 10 18:39 /usr/bin/ControllerRegistrationAgent -rwxr-xr-x 1 root root 7.6K Apr 10 18:43 /usr/bin/Controllerdb lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/CpuComplex -> /usr/lib/libCpuComplexLoader.so -rwxr-xr-x 1 root root 2.2K Apr 10 17:18 /usr/bin/CreateCleanConfig -rwxr-xr-x 1 root root 288 Apr 16 02:25 /usr/bin/Dcbx -rwxr-xr-x 1 root root 9.2K Apr 16 02:11 /usr/bin/DebugSwitchover lrwxrwxrwx 1 root root 30 Apr 21 01:39 /usr/bin/DhcpRelay -> /usr/lib/libDhcpRelayLoader.so -rwxr-xr-x 1 root root 3.1K Apr 10 17:25 /usr/bin/DiskUsageWatch lrwxrwxrwx 1 root root 26 Apr 21 01:39 /usr/bin/Dot1x -> /usr/lib/libDot1xLoader.so -rwxr-xr-x 1 root root 59K Apr 10 17:02 /usr/bin/DumpDb lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Ebra -> /usr/lib/libEbraLoader.so -rwxr-xr-x 1 root root 1.1K Apr 16 02:11 /usr/bin/ElectionMgr -rwxr-xr-x 1 root root 7.5K Apr 18 19:04 /usr/bin/EosCoredumpControl -rwxr-xr-x 1 root root 2.4K Apr 10 17:09 /usr/bin/EosEntityTreeMonitor -rwxr-xr-x 1 root root 8.6K Apr 10 18:35 /usr/bin/EosInit -rwxr-xr-x 1 root root 3.5K Apr 18 19:04 /usr/bin/EosInitReport -rwxr-xr-x 1 root root 174 Apr 18 19:04 /usr/bin/EosMemUsage -rwxr-xr-x 1 root root 17K Apr 18 19:04 /usr/bin/EosOomAdjust -rwxr-xr-x 1 root root 15K Apr 18 19:04 /usr/bin/EosSsdDutArchiveFilesTest.py -rwxr-xr-x 1 root root 170 Apr 10 17:44 /usr/bin/Etba lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/EventMgr -> /usr/lib/libEventMgrLoader.so -rwxr-xr-x 1 root root 168 Apr 10 17:35 /usr/bin/EventMon lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/FanDetector -> /usr/lib/libFanDetectorLoader.so -rwxr-xr-x 1 root root 3.8K Apr 10 17:18 /usr/bin/FastCli -rwxr-xr-x 1 root root 2.3K Apr 10 17:18 /usr/bin/FastClid lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/FastServerFailover -> /usr/lib/libFsfAgentLoader.so -rwxr-xr-x 1 root root 2.3K Apr 18 19:04 /usr/bin/FetchLogs lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Fhrp -> /usr/lib/libFhrpLoader.so -rwxr-xr-x 1 root root 530 Apr 16 02:11 /usr/bin/FileReplicator -rwxr-xr-x 1 root root 1.7K Apr 10 17:36 /usr/bin/Fru -rwxr-xr-x 1 root root 303 Apr 10 19:12 /usr/bin/GpioLed -rwxr-xr-x 1 root root 237 Apr 16 02:19 /usr/bin/HadoopTracer lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Hsc -> /usr/lib/libHscLoader.so lrwxrwxrwx 1 root root 30 Apr 21 01:39 /usr/bin/Igmp -> /usr/lib/libIgmpAgentLoader.so lrwxrwxrwx 1 root root 34 Apr 21 01:39 /usr/bin/IgmpHostProxy -> /usr/lib/libIgmpHostProxyLoader.so -rwxr-xr-x 1 root root 335 Apr 10 18:07 /usr/bin/IgmpSnooping -rwxr-xr-x 1 root root 2.0K Apr 10 17:36 /usr/bin/InstallExtension -rwxr-xr-x 1 root root 3.3K Apr 10 17:09 /usr/bin/InterpretHeapDump lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/Ipv6RouterAdvt -> /usr/lib/libRouterAdvtLoader.so lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Ira -> /usr/lib/libIraLoader.so lrwxrwxrwx 1 root root 30 Apr 21 01:39 /usr/bin/KernelFib -> /usr/lib/libKernelFibLoader.so lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/KernelMfib -> /usr/lib/libKernelMfibLoader.so lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/LacpTxAgent -> /usr/lib/libLacpTxAgentLoader.so -rwxr-xr-x 1 root root 3.5K Apr 10 17:51 /usr/bin/LacpduSendRequest.py -rwxr-xr-x 1 root root 731 Apr 10 17:51 /usr/bin/Lag -rwxr-xr-x 1 root root 158 Apr 10 17:31 /usr/bin/Launcher lrwxrwxrwx 1 root root 30 Apr 21 01:39 /usr/bin/LedPolicy -> /usr/lib/libLedPolicyLoader.so lrwxrwxrwx 1 root root 37 Apr 21 01:39 /usr/bin/LinuxBridge -> /usr/lib/libLinuxBridgeAgentLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Lldp -> /usr/lib/libLldpLoader.so -rwxr-xr-x 1 root root 9.9K Apr 10 18:35 /usr/bin/LoadConfig -rwxr-xr-x 1 root root 655 Apr 10 17:36 /usr/bin/LoadExtensionStatus -rwxr-xr-x 1 root root 745 Apr 10 17:36 /usr/bin/LoadExtensions lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/LoopProtect -> /usr/lib/libLoopProtectLoader.so lrwxrwxrwx 1 root root 37 Apr 21 01:39 /usr/bin/ManagementActive -> /usr/lib/libManagementActiveLoader.so -rwxr-xr-x 1 root root 272 Apr 10 17:39 /usr/bin/Mdio lrwxrwxrwx 1 root root 30 Apr 21 01:39 /usr/bin/Mirroring -> /usr/lib/libMirroringLoader.so -rwxr-xr-x 1 root root 350 Apr 10 18:14 /usr/bin/Mlag -rwxr-xr-x 1 root root 3.8K Apr 10 18:14 /usr/bin/MlagFileTransfer -rwxr-xr-x 1 root root 374 Apr 10 18:14 /usr/bin/MlagTunnel lrwxrwxrwx 1 root root 34 Apr 21 01:39 /usr/bin/ModularSystem -> /usr/lib/libModularSystemLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Mpls -> /usr/lib/libMplsLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Msdp -> /usr/lib/libMsdpLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Msrp -> /usr/lib/libMsrpLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/Mvrp -> /usr/lib/libMvrpLoader.so lrwxrwxrwx 1 root root 41 Apr 21 01:39 /usr/bin/NetworkTopology -> /usr/lib/libNetworkTopologyAgentLoader.so lrwxrwxrwx 1 root root 51 Apr 21 01:39 /usr/bin/NetworkTopologyAggregator -> /usr/lib/libNetworkTopologyAggregatorAgentLoader.so -rwxr-xr-x 1 root root 190 Apr 16 04:22 /usr/bin/NorCalInit lrwxrwxrwx 1 root root 35 Apr 21 01:39 /usr/bin/ObjectTracking -> /usr/lib/libObjectTrackingLoader.so lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/OpenFlow -> /usr/lib/libOpenFlowLoader.so lrwxrwxrwx 1 root root 35 Apr 21 01:39 /usr/bin/OpenStack -> /usr/lib/libOpenStackAgentLoader.so -rwxr-xr-x 1 root root 234 Apr 16 02:43 /usr/bin/OpenStackPoller lrwxrwxrwx 1 root root 27 Apr 21 01:39 /usr/bin/PciBus -> /usr/lib/libPciBusLoader.so lrwxrwxrwx 1 root root 27 Apr 21 01:39 /usr/bin/PcieNt -> /usr/lib/libPcieNtLoader.so -rwxr-xr-x 1 root root 162 Apr 16 01:51 /usr/bin/PhyEthtool -rwxr-xr-x 1 root root 3.8K Apr 16 01:51 /usr/bin/PhyEthtoolConfig lrwxrwxrwx 1 root root 28 Apr 21 01:39 /usr/bin/Picasso -> /usr/lib/libPicassoLoader.so -rwxr-xr-x 1 root root 18K Apr 10 17:49 /usr/bin/PicassoSummer lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/Pim -> /usr/lib/libPimAgentLoader.so lrwxrwxrwx 1 root root 27 Apr 21 01:39 /usr/bin/PimBsr -> /usr/lib/libPimBsrLoader.so lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/PimReg -> /usr/lib/libPimRegAgentLoader.so lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/Pimsm -> /usr/lib/libPimsmAgentLoader.so -rwxr-xr-x 1 root root 190K Apr 10 08:21 /usr/bin/PlxCm_dbg -rwxr-xr-x 1 root root 87K Apr 10 08:21 /usr/bin/PlxEep_dbg -rwxr-xr-x 1 root root 23K Apr 10 08:21 /usr/bin/PlxEeprom.py -rwxr-xr-x 1 root root 7.1K Apr 10 08:21 /usr/bin/Plx_load -rwxr-xr-x 1 root root 3.4K Apr 10 08:21 /usr/bin/Plx_unload lrwxrwxrwx 1 root root 26 Apr 21 01:39 /usr/bin/PmbusPowerSupply -> /usr/lib/libPmbusLoader.so lrwxrwxrwx 1 root root 28 Apr 21 01:39 /usr/bin/PortSec -> /usr/lib/libPortSecLoader.so -rwxr-xr-x 1 root root 1.6K Apr 16 04:22 /usr/bin/Post lrwxrwxrwx 1 root root 33 Apr 21 01:39 /usr/bin/PowerManager -> /usr/lib/libPowerManagerLoader.so lrwxrwxrwx 1 root root 40 Apr 21 01:39 /usr/bin/PowerSupplyDetector -> /usr/lib/libPowerSupplyDetectorLoader.so lrwxrwxrwx 1 root root 42 Apr 21 01:39 /usr/bin/PowerSupplyFixed -> /usr/lib/libPowerSupplyFixedAgentLoader.so -rwxr-xr-x 1 root root 49 Apr 10 17:11 /usr/bin/ProcMgr lrwxrwxrwx 1 root root 28 Apr 21 01:39 /usr/bin/Psmi144PowerSupply -> /usr/lib/libPsmi144Loader.so lrwxrwxrwx 1 root root 27 Apr 21 01:39 /usr/bin/Psmi20PowerSupply -> /usr/lib/libPsmi20Loader.so lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/Ptp -> /usr/lib/libPtpAgentLoader.so lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/PtpTimeSync -> /usr/lib/libPtpTimeSyncLoader.so lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Qos -> /usr/lib/libQosLoader.so lrwxrwxrwx 1 root root 40 Apr 21 01:39 /usr/bin/ReachabilityMonitor -> /usr/lib/libReachabilityMonitorLoader.so -rwxr-xr-x 1 root root 788 Apr 10 18:26 /usr/bin/Rib -rwxr-xr-x 1 root root 2.8K Apr 10 18:26 /usr/bin/RibdMemoryMonitor -rwxr-xr-x 1 root root 1.6K Apr 10 18:26 /usr/bin/RibdShowTech -rwxr-xr-x 1 root root 4.3K Apr 10 18:26 /usr/bin/RibdSupport -rwxr-xr-x 1 root root 1.6K Apr 16 01:53 /usr/bin/RunCli lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/ScdAgent -> /usr/lib/libScdAgentLoader.so -rwxr-xr-x 1 root root 1.1K Apr 10 17:18 /usr/bin/SessionCli -rwxr-xr-x 1 root root 3.9K Apr 10 07:42 /usr/bin/SetupEosDisk lrwxrwxrwx 1 root root 26 Apr 21 01:39 /usr/bin/Sflow -> /usr/lib/libSflowLoader.so -rwxr-xr-x 1 root root 176 Apr 16 02:11 /usr/bin/ShredRecursive -rwxr-xr-x 1 root root 277 Apr 10 17:39 /usr/bin/Smbus -rwxr-xr-x 1 root root 228 Apr 16 02:01 /usr/bin/Snmp lrwxrwxrwx 1 root root 24 Apr 21 01:39 /usr/bin/Sol -> /usr/lib/libSolLoader.so lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/StandbyCpld -> /usr/lib/libStandbyCpldLoader.so lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/Stp -> /usr/lib/libStpAgentLoader.so lrwxrwxrwx 1 root root 37 Apr 21 01:39 /usr/bin/StpTopology -> /usr/lib/libStpTopologyAgentLoader.so -rwxr-xr-x 1 root root 498 Apr 10 17:32 /usr/bin/SuperServer -rwxr-xr-x 1 root root 1.1K Apr 10 17:15 /usr/bin/Sysdb -rwxr-xr-x 1 root root 1.9K Apr 10 18:35 /usr/bin/SysdbInit lrwxrwxrwx 1 root root 27 Apr 21 01:39 /usr/bin/SysdbMonitor -> /usr/lib/libSysdbMonitor.so -rwxr-xr-x 1 root root 167 Apr 10 17:15 /usr/bin/SysdbProxy -rwxr-xr-x 1 root root 12K Apr 10 17:25 /usr/bin/TapCat lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/Thermostat -> /usr/lib/libThermostatLoader.so lrwxrwxrwx 1 root root 25 Apr 21 01:39 /usr/bin/TopoAgent -> /usr/lib/libTopoLoader.so -rwxr-xr-x 1 root root 1.9K Apr 10 17:36 /usr/bin/UninstallExtension -rwxr-xr-x 1 root root 188 Apr 16 04:22 /usr/bin/UpdateUcd -rwxr-xr-x 1 root root 156 Apr 16 01:50 /usr/bin/Vm lrwxrwxrwx 1 root root 29 Apr 21 01:39 /usr/bin/VmTracer -> /usr/lib/libVmTracerLoader.so -rwxr-xr-x 1 root root 1.3K Apr 16 02:21 /usr/bin/VmTracerEventHandler lrwxrwxrwx 1 root root 26 Apr 21 01:39 /usr/bin/Vxlan -> /usr/lib/libVxlanLoader.so lrwxrwxrwx 1 root root 32 Apr 21 01:39 /usr/bin/VxlanController -> /usr/lib/libVxlanCntrlrLoader.so lrwxrwxrwx 1 root root 31 Apr 21 01:39 /usr/bin/VxlanSwFwd -> /usr/lib/libVxlanSwFwdLoader.so -rwxr-xr-x 1 root root 804 Apr 18 06:18 /usr/bin/Xmpp -rwxr-xr-x 1 root root 2.8K Apr 18 06:18 /usr/bin/XmppCli -rwxr-xr-x 1 root root 389 Apr 16 02:21 /usr/bin/ZeroTouch [kotetsu@veos-dev ~]$
bash-4.1# ls -alh /usr/lib/python2.7/site-packages/*.py -rw-r--r-- 1 root root 63K Apr 16 01:53 /usr/lib/python2.7/site-packages/Aaa.py -rw-r--r-- 1 root root 7.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaApi.py -rw-r--r-- 1 root root 24K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaCliLib.py -rw-r--r-- 1 root root 876 Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaDefs.py -rw-r--r-- 1 root root 26K Apr 16 01:53 /usr/lib/python2.7/site-packages/AaaPluginLib.py -rw-r--r-- 1 root root 175 Apr 10 17:58 /usr/lib/python2.7/site-packages/Acl.py -rw-r--r-- 1 root root 32K Apr 10 17:58 /usr/lib/python2.7/site-packages/AclCliLib.py -rw-r--r-- 1 root root 18K Apr 10 17:58 /usr/lib/python2.7/site-packages/AclLib.py -rw-r--r-- 1 root root 23K Apr 10 17:14 /usr/lib/python2.7/site-packages/Agent.py -rw-r--r-- 1 root root 2.9K Apr 10 17:32 /usr/lib/python2.7/site-packages/AgentCliHelper.py -rw-r--r-- 1 root root 6.0K Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentCommandRequest.py -rw-r--r-- 1 root root 7.0K Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentPing.py -rw-r--r-- 1 root root 2.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/AgentSocketHandler.py -rw-r--r-- 1 root root 799 Apr 10 17:14 /usr/lib/python2.7/site-packages/AgentTerminate.py -rw-r--r-- 1 root root 3.6K Apr 16 04:18 /usr/lib/python2.7/site-packages/AleFibCliDiffUtilLib.py -rw-r--r-- 1 root root 2.8K Apr 16 04:22 /usr/lib/python2.7/site-packages/AltaVoltageRailAdj.py -rw-r--r-- 1 root root 16K Apr 10 17:29 /usr/lib/python2.7/site-packages/ArHal.py -rw-r--r-- 1 root root 11K Apr 10 17:27 /usr/lib/python2.7/site-packages/Aresolve.py -rw-r--r-- 1 root root 20K Apr 10 17:09 /usr/lib/python2.7/site-packages/Ark.py -rw-r--r-- 1 root root 2.9K Apr 10 17:25 /usr/lib/python2.7/site-packages/ArnetModel.py -rw-r--r-- 1 root root 170 Apr 16 01:43 /usr/lib/python2.7/site-packages/ArpAgent.py -rw-r--r-- 1 root root 301 Apr 16 01:43 /usr/lib/python2.7/site-packages/ArpLib.py -rw-r--r-- 1 root root 241 Apr 10 18:42 /usr/lib/python2.7/site-packages/Arsys.py -rw-r--r-- 1 root root 289 Apr 10 18:42 /usr/lib/python2.7/site-packages/ArsysNames.py -rw-r--r-- 1 root root 1.4K Apr 10 17:41 /usr/lib/python2.7/site-packages/Artist.py -rw-r--r-- 1 root root 4.1K Apr 10 07:26 /usr/lib/python2.7/site-packages/Assert.py -rw-r--r-- 1 root root 96K Apr 10 17:18 /usr/lib/python2.7/site-packages/BasicCli.py -rw-r--r-- 1 root root 274 Apr 10 17:57 /usr/lib/python2.7/site-packages/BfdAgent.py -rw-r--r-- 1 root root 2.1K Apr 10 17:57 /usr/lib/python2.7/site-packages/BfdLib.py -rw-r--r-- 1 root root 3.3K Apr 16 02:38 /usr/lib/python2.7/site-packages/BgpLib.py -rw-r--r-- 1 root root 7.8K Apr 16 02:38 /usr/lib/python2.7/site-packages/BgpLogMsgs.py -rw-r--r-- 1 root root 4.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/BogusFdl.py -rw-r--r-- 1 root root 2.7K Apr 10 17:31 /usr/lib/python2.7/site-packages/BootMgr.py -rw-r--r-- 1 root root 1.6K Apr 10 17:09 /usr/lib/python2.7/site-packages/Bunch.py -rw-r--r-- 1 root root 2.8K Apr 10 17:57 /usr/lib/python2.7/site-packages/BusUtilCommon.py -rw-r--r-- 1 root root 12K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiAaa.py -rw-r--r-- 1 root root 5.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CapiCliCommon.py -rw-r--r-- 1 root root 5.0K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiConstants.py -rw-r--r-- 1 root root 11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiJsonCli.py -rw-r--r-- 1 root root 11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiJsonRpcBase.py -rw-r--r-- 1 root root 11K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiRequestContext.py -rw-r--r-- 1 root root 9.5K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiSsl.py -rw-r--r-- 1 root root 7.4K Apr 16 01:57 /usr/lib/python2.7/site-packages/CapiUwsgiServer.py -rw-r--r-- 1 root root 3.8K Apr 10 17:13 /usr/lib/python2.7/site-packages/Cell.py -rw-r--r-- 1 root root 972 Apr 10 17:36 /usr/lib/python2.7/site-packages/CheckFdlsLib.py -rw-r--r-- 1 root root 12K Apr 16 04:22 /usr/lib/python2.7/site-packages/Chl822XConfigTool.py -rw-r--r-- 1 root root 48K Apr 10 17:18 /usr/lib/python2.7/site-packages/Cli.py -rw-r--r-- 1 root root 4.6K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliAaa.py -rw-r--r-- 1 root root 29K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliApi.py -rw-r--r-- 1 root root 6.3K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliCommon.py -rw-r--r-- 1 root root 960 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliExtensions.py -rw-r--r-- 1 root root 667 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliInputWrapper.py -rw-r--r-- 1 root root 49K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliModel.py -rw-r--r-- 1 root root 22K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliParser.py -rw-r--r-- 1 root root 11K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliParserCommandClass.py -rw-r--r-- 1 root root 222 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliProg.py -rw-r--r-- 1 root root 4.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliRangeExpansion.py -rw-r--r-- 1 root root 66K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliRule.py -rw-r--r-- 1 root root 40K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliSave.py -rw-r--r-- 1 root root 7.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliSchedulerLib.py -rw-r--r-- 1 root root 52K Apr 10 17:17 /usr/lib/python2.7/site-packages/CliSession.py -rw-r--r-- 1 root root 374 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliSessionMgrName.py -rw-r--r-- 1 root root 1.1K Apr 10 17:17 /usr/lib/python2.7/site-packages/CliSessionOnCommit.py -rw-r--r-- 1 root root 1.5K Apr 10 17:18 /usr/lib/python2.7/site-packages/CmdExtension.py -rw-r--r-- 1 root root 17K Apr 10 17:17 /usr/lib/python2.7/site-packages/ConfigMount.py -rw-r--r-- 1 root root 6.6K Apr 10 17:18 /usr/lib/python2.7/site-packages/ConfigSessionCommon.py -rw-r--r-- 1 root root 173 Apr 10 18:56 /usr/lib/python2.7/site-packages/ControllerDebugClientAgent.py -rw-r--r-- 1 root root 173 Apr 10 18:56 /usr/lib/python2.7/site-packages/ControllerDebugServerAgent.py -rw-r--r-- 1 root root 16K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerHeartbeatLib.py -rw-r--r-- 1 root root 18K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerMessageLib.py -rw-r--r-- 1 root root 2.0K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerModel.py -rw-r--r-- 1 root root 294 Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerOobAgent.py -rw-r--r-- 1 root root 199 Apr 10 18:39 /usr/lib/python2.7/site-packages/ControllerRegistration.py -rw-r--r-- 1 root root 4.3K Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerRegistry.py -rw-r--r-- 1 root root 2.1K Apr 10 18:03 /usr/lib/python2.7/site-packages/ControllerSslReactorLib.py -rw-r--r-- 1 root root 7.5K Apr 10 18:03 /usr/lib/python2.7/site-packages/Controller_pb2.py -rw-r--r-- 1 root root 293 Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerdbAgent.py -rw-r--r-- 1 root root 4.5K Apr 10 18:43 /usr/lib/python2.7/site-packages/ControllerdbEntityManager.py -rw-r--r-- 1 root root 371 Apr 10 17:48 /usr/lib/python2.7/site-packages/CpuComplex.py -rw-r--r-- 1 root root 4.8K Apr 10 17:18 /usr/lib/python2.7/site-packages/DateTimeRule.py -rw-r--r-- 1 root root 1.7K Apr 16 02:25 /usr/lib/python2.7/site-packages/Dcbx.py -rw-r--r-- 1 root root 1.8K Apr 16 02:25 /usr/lib/python2.7/site-packages/DcbxLib.py -rw-r--r-- 1 root root 1.3K Apr 16 02:25 /usr/lib/python2.7/site-packages/DcbxTypes.py -rw-r--r-- 1 root root 3.8K Apr 10 17:20 /usr/lib/python2.7/site-packages/Debug.py -rw-r--r-- 1 root root 6.1K Apr 16 02:11 /usr/lib/python2.7/site-packages/DebugSwitchoverLib.py -rw-r--r-- 1 root root 3.0K Apr 16 01:50 /usr/lib/python2.7/site-packages/DecapGroupModel.py -rw-r--r-- 1 root root 864 Apr 10 17:09 /usr/lib/python2.7/site-packages/DesCrypt.py -rw-r--r-- 1 root root 1.1K Apr 10 17:25 /usr/lib/python2.7/site-packages/DeviceNameLib.py -rw-r--r-- 1 root root 161 Apr 16 02:25 /usr/lib/python2.7/site-packages/DhcpRelayAgent.py -rw-r--r-- 1 root root 745 Apr 16 02:25 /usr/lib/python2.7/site-packages/DhcpRelayVrfCliLib.py -rw-r--r-- 1 root root 23K Apr 10 17:29 /usr/lib/python2.7/site-packages/DiagLib.py -rw-r--r-- 1 root root 4.4K Apr 10 17:29 /usr/lib/python2.7/site-packages/Diagnostics.py -rw-r--r-- 1 root root 20K Apr 10 17:29 /usr/lib/python2.7/site-packages/Diags.py -rw-r--r-- 1 root root 797 Apr 10 08:08 /usr/lib/python2.7/site-packages/DiagsTools.py -rw-r--r-- 1 root root 379 Apr 10 08:08 /usr/lib/python2.7/site-packages/DiagsToolsNames.py -rw-r--r-- 1 root root 1.3K Apr 16 02:02 /usr/lib/python2.7/site-packages/Dot1xLib.py -rw-r--r-- 1 root root 4.7K Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraLib.py -rw-r--r-- 1 root root 452 Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraLogMsgs.py -rw-r--r-- 1 root root 364 Apr 10 17:43 /usr/lib/python2.7/site-packages/EbraName.py -rw-r--r-- 1 root root 64K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridge.py -rw-r--r-- 1 root root 3.1K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridgeLib.py -rw-r--r-- 1 root root 1.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/EbraTestBridgePort.py -rw-r--r-- 1 root root 3.1K Apr 10 17:54 /usr/lib/python2.7/site-packages/EcbDiagLib.py -rw-r--r-- 1 root root 38K Apr 16 02:11 /usr/lib/python2.7/site-packages/ElectionMgrAgent.py -rw-r--r-- 1 root root 3.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/Email.py -rw-r--r-- 1 root root 3.4K Apr 10 17:28 /usr/lib/python2.7/site-packages/EntityMib.py -rw-r--r-- 1 root root 2.9K Apr 10 17:44 /usr/lib/python2.7/site-packages/EnvironmentUtils.py -rw-r--r-- 1 root root 7.3K Apr 10 07:42 /usr/lib/python2.7/site-packages/EosDisk.py -rw-r--r-- 1 root root 1.3K Apr 10 18:35 /usr/lib/python2.7/site-packages/EosInit.py -rw-r--r-- 1 root root 185 Apr 10 18:35 /usr/lib/python2.7/site-packages/EosInitLib.py -rw-r--r-- 1 root root 9.3K Apr 18 19:04 /usr/lib/python2.7/site-packages/EosLogUtil.py -rw-r--r-- 1 root root 6.6K Apr 10 07:42 /usr/lib/python2.7/site-packages/EosVersion.py -rw-r--r-- 1 root root 6.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/Errdisable.py -rw-r--r-- 1 root root 615 Apr 10 17:39 /usr/lib/python2.7/site-packages/ErrdisableCliLib.py -rw-r--r-- 1 root root 480 Apr 10 17:39 /usr/lib/python2.7/site-packages/EthIntf.py -rw-r--r-- 1 root root 1.8K Apr 10 17:39 /usr/lib/python2.7/site-packages/EthIntfLib.py -rw-r--r-- 1 root root 2.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/EthIntfUtil.py -rw-r--r-- 1 root root 6.5K Apr 10 17:25 /usr/lib/python2.7/site-packages/Ethernet.py -rw-r--r-- 1 root root 13K Apr 10 17:29 /usr/lib/python2.7/site-packages/Ethxmit.py -rw-r--r-- 1 root root 174 Apr 10 17:29 /usr/lib/python2.7/site-packages/EthxmitProg.py -rw-r--r-- 1 root root 639 Apr 10 17:55 /usr/lib/python2.7/site-packages/EventLib.py -rw-r--r-- 1 root root 180 Apr 10 17:55 /usr/lib/python2.7/site-packages/EventMgr.py -rw-r--r-- 1 root root 14K Apr 10 17:35 /usr/lib/python2.7/site-packages/EventMonAgent.py -rw-r--r-- 1 root root 1003 Apr 10 17:09 /usr/lib/python2.7/site-packages/ExecTimeout.py -rw-r--r-- 1 root root 8.2K Apr 10 17:20 /usr/lib/python2.7/site-packages/ExtEntity.py -rw-r--r-- 1 root root 30K Apr 10 17:36 /usr/lib/python2.7/site-packages/ExtensionMgrLib.py -rw-r--r-- 1 root root 926 Apr 10 17:44 /usr/lib/python2.7/site-packages/FanControllerDiagLib.py -rw-r--r-- 1 root root 2.7K Apr 10 17:09 /usr/lib/python2.7/site-packages/FastServUtil.py -rw-r--r-- 1 root root 8.4K Apr 10 17:32 /usr/lib/python2.7/site-packages/FaultInjectionCliHelper.py -rw-r--r-- 1 root root 11K Apr 10 17:36 /usr/lib/python2.7/site-packages/Fdl.py -rw-r--r-- 1 root root 13K Apr 10 18:42 /usr/lib/python2.7/site-packages/FdlIo.py -rw-r--r-- 1 root root 156 Apr 10 18:16 /usr/lib/python2.7/site-packages/FhrpAgent.py -rw-r--r-- 1 root root 592 Apr 10 18:16 /usr/lib/python2.7/site-packages/FhrpUtils.py -rw-r--r-- 1 root root 13K Apr 10 17:18 /usr/lib/python2.7/site-packages/FileCliUtil.py -rw-r--r-- 1 root root 6.5K Apr 16 02:11 /usr/lib/python2.7/site-packages/FileReplicationCmds.py -rw-r--r-- 1 root root 36K Apr 16 02:11 /usr/lib/python2.7/site-packages/FileReplicatorAgent.py -rw-r--r-- 1 root root 1.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/FilteredDictView.py -rw-r--r-- 1 root root 2.4K Apr 16 01:53 /usr/lib/python2.7/site-packages/FirmwareRev.py -rw-r--r-- 1 root root 219 Apr 10 07:48 /usr/lib/python2.7/site-packages/FlashUtil.py -rw-r--r-- 1 root root 25K Apr 10 17:36 /usr/lib/python2.7/site-packages/FpgaUtil.py -rw-r--r-- 1 root root 1.6K Apr 10 17:41 /usr/lib/python2.7/site-packages/FrameBufferAgent.py -rw-r--r-- 1 root root 170 Apr 10 17:36 /usr/lib/python2.7/site-packages/FruAgent.py -rw-r--r-- 1 root root 249 Apr 10 17:36 /usr/lib/python2.7/site-packages/FruUtils.py -rw-r--r-- 1 root root 1012 Apr 10 17:09 /usr/lib/python2.7/site-packages/GenericReactor.py -rw-r--r-- 1 root root 1.3K Apr 10 17:36 /usr/lib/python2.7/site-packages/GenfdlLib.py -rw-r--r-- 1 root root 5.2K Apr 10 17:36 /usr/lib/python2.7/site-packages/GenprefdlLib.py -rw-r--r-- 1 root root 1.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/GpioLedAgent.py -rw-r--r-- 1 root root 29K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopRpc.py -rw-r--r-- 1 root root 86K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopTracer.py -rw-r--r-- 1 root root 1.6K Apr 16 02:19 /usr/lib/python2.7/site-packages/HadoopTracerLogMsgs.py -rw-r--r-- 1 root root 4.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/HostnameCli.py -rw-r--r-- 1 root root 275 Apr 17 10:42 /usr/lib/python2.7/site-packages/HscAgent.py -rw-r--r-- 1 root root 883 Apr 17 10:42 /usr/lib/python2.7/site-packages/HscCliLib.py -rw-r--r-- 1 root root 4.5K Apr 10 17:09 /usr/lib/python2.7/site-packages/HumanReadable.py -rw-r--r-- 1 root root 2.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/HwLogging.py -rw-r--r-- 1 root root 2.9K Apr 10 17:29 /usr/lib/python2.7/site-packages/IProcUtil.py -rw-r--r-- 1 root root 715 Apr 10 17:25 /usr/lib/python2.7/site-packages/IanaAddressFamilyNumbers.py -rw-r--r-- 1 root root 3.8K Apr 10 17:25 /usr/lib/python2.7/site-packages/IanaMau.py -rw-r--r-- 1 root root 82K Apr 10 17:51 /usr/lib/python2.7/site-packages/IdpromLib.py -rw-r--r-- 1 root root 3.0K Apr 10 17:25 /usr/lib/python2.7/site-packages/IfLinkMonitor.py -rw-r--r-- 1 root root 156 Apr 10 18:57 /usr/lib/python2.7/site-packages/IgmpAgent.py -rw-r--r-- 1 root root 218 Apr 10 18:57 /usr/lib/python2.7/site-packages/IgmpLib.py -rw-r--r-- 1 root root 9.0K Apr 10 18:07 /usr/lib/python2.7/site-packages/IgmpSnoopingAgent.py -rw-r--r-- 1 root root 843 Apr 10 18:07 /usr/lib/python2.7/site-packages/IgmpSnoopingLib.py -rw-r--r-- 1 root root 387 Apr 10 17:34 /usr/lib/python2.7/site-packages/IntfModels.py -rw-r--r-- 1 root root 199 Apr 16 02:06 /usr/lib/python2.7/site-packages/IntfSnmpLib.py -rw-r--r-- 1 root root 14K Apr 10 17:09 /usr/lib/python2.7/site-packages/IpUtils.py -rw-r--r-- 1 root root 3.4K Apr 16 02:19 /usr/lib/python2.7/site-packages/IpcConnectionContext_pb2.py -rw-r--r-- 1 root root 166 Apr 16 01:53 /usr/lib/python2.7/site-packages/Ipv6RouterAdvtAgent.py -rw-r--r-- 1 root root 5.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/Ipv6RouterAdvtLib.py -rw-r--r-- 1 root root 336 Apr 10 17:44 /usr/lib/python2.7/site-packages/IraAgent.py -rw-r--r-- 1 root root 3.5K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraConsts.py -rw-r--r-- 1 root root 4.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraIntfUtil.py -rw-r--r-- 1 root root 360 Apr 10 17:44 /usr/lib/python2.7/site-packages/IraLogMsgs.py -rw-r--r-- 1 root root 13K Apr 10 17:44 /usr/lib/python2.7/site-packages/IraVrfCliLib.py -rw-r--r-- 1 root root 29K Apr 16 02:19 /usr/lib/python2.7/site-packages/JobTrackerRpc.py -rw-r--r-- 1 root root 176 Apr 10 17:56 /usr/lib/python2.7/site-packages/KernelFibAgent.py -rw-r--r-- 1 root root 160 Apr 16 01:55 /usr/lib/python2.7/site-packages/KernelMfib.py -rw-r--r-- 1 root root 8.7K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpAgent.py -rw-r--r-- 1 root root 602 Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpConstants.py -rw-r--r-- 1 root root 3.4K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpLib.py -rw-r--r-- 1 root root 3.5K Apr 10 17:51 /usr/lib/python2.7/site-packages/LacpduSendRequest.py -rw-r--r-- 1 root root 16K Apr 10 17:51 /usr/lib/python2.7/site-packages/LagAgent.py -rw-r--r-- 1 root root 363 Apr 10 17:51 /usr/lib/python2.7/site-packages/LagName.py -rw-r--r-- 1 root root 243 Apr 16 03:52 /usr/lib/python2.7/site-packages/LanzLib.py -rw-r--r-- 1 root root 62K Apr 10 17:31 /usr/lib/python2.7/site-packages/Launcher.py -rw-r--r-- 1 root root 1.4K Apr 10 17:31 /usr/lib/python2.7/site-packages/LauncherLib.py -rw-r--r-- 1 root root 6.3K Apr 10 17:31 /usr/lib/python2.7/site-packages/LauncherUtil.py -rw-r--r-- 1 root root 13K Apr 10 17:13 /usr/lib/python2.7/site-packages/LazyMount.py -rw-r--r-- 1 root root 1.1K Apr 10 17:29 /usr/lib/python2.7/site-packages/LegacyUtil.py -rw-r--r-- 1 root root 277 Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpAgent.py -rw-r--r-- 1 root root 1.8K Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpConstants.py -rw-r--r-- 1 root root 633 Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpLib.py -rw-r--r-- 1 root root 1.5K Apr 16 02:18 /usr/lib/python2.7/site-packages/LldpTypes.py -rw-r--r-- 1 root root 5.5K Apr 10 17:36 /usr/lib/python2.7/site-packages/LoadExtensionStatus.py -rw-r--r-- 1 root root 4.8K Apr 10 17:36 /usr/lib/python2.7/site-packages/LoadExtensions.py -rw-r--r-- 1 root root 2.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/LocalUserLib.py -rw-r--r-- 1 root root 1.4K Apr 10 17:09 /usr/lib/python2.7/site-packages/LogRepeater.py -rw-r--r-- 1 root root 12K Apr 16 01:56 /usr/lib/python2.7/site-packages/LoggingLib.py -rw-r--r-- 1 root root 160 Apr 10 17:18 /usr/lib/python2.7/site-packages/MaintenanceModeAgent.py -rw-r--r-- 1 root root 2.1K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioAgent.py -rw-r--r-- 1 root root 3.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioBlob.py -rw-r--r-- 1 root root 1019 Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioClient.py -rw-r--r-- 1 root root 15K Apr 10 17:39 /usr/lib/python2.7/site-packages/MdioUtil.py -rw-r--r-- 1 root root 15K Apr 10 17:09 /usr/lib/python2.7/site-packages/MemTools.py -rw-r--r-- 1 root root 3.7K Apr 10 17:46 /usr/lib/python2.7/site-packages/MgmtSecuritySslStatusSm.py -rw-r--r-- 1 root root 161 Apr 10 18:12 /usr/lib/python2.7/site-packages/MirroringAgent.py -rw-r--r-- 1 root root 220 Apr 10 18:12 /usr/lib/python2.7/site-packages/MirroringLib.py -rw-r--r-- 1 root root 7.9K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagHeartbeatLib.py -rw-r--r-- 1 root root 3.5K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagShared.py -rw-r--r-- 1 root root 16K Apr 10 18:14 /usr/lib/python2.7/site-packages/MlagTunnel.py -rw-r--r-- 1 root root 4.3K Apr 10 18:42 /usr/lib/python2.7/site-packages/ModularSystemCardUtils.py -rw-r--r-- 1 root root 22K Apr 10 17:51 /usr/lib/python2.7/site-packages/MolexDiagLib.py -rw-r--r-- 1 root root 156 Apr 17 09:43 /usr/lib/python2.7/site-packages/MplsAgent.py -rw-r--r-- 1 root root 219 Apr 17 09:43 /usr/lib/python2.7/site-packages/MplsLib.py -rw-r--r-- 1 root root 753 Apr 16 01:52 /usr/lib/python2.7/site-packages/MrouteCliHelpers.py -rw-r--r-- 1 root root 1.1K Apr 10 18:07 /usr/lib/python2.7/site-packages/MrpCliLib.py -rw-r--r-- 1 root root 156 Apr 16 03:12 /usr/lib/python2.7/site-packages/MsdpAgent.py -rw-r--r-- 1 root root 5.4K Apr 10 18:09 /usr/lib/python2.7/site-packages/MsrpCliLib.py -rw-r--r-- 1 root root 702 Apr 10 18:09 /usr/lib/python2.7/site-packages/MsrpTypes.py -rw-r--r-- 1 root root 42K Apr 10 17:18 /usr/lib/python2.7/site-packages/MultiRangeRule.py -rw-r--r-- 1 root root 905 Apr 10 18:09 /usr/lib/python2.7/site-packages/MvrpCliLib.py -rw-r--r-- 1 root root 1.5K Apr 10 17:09 /usr/lib/python2.7/site-packages/Netns.py -rw-r--r-- 1 root root 207 Apr 10 07:26 /usr/lib/python2.7/site-packages/NetnsNames.py -rw-r--r-- 1 root root 299 Apr 10 19:22 /usr/lib/python2.7/site-packages/NetworkTopologyAgent.py -rw-r--r-- 1 root root 322 Apr 10 19:22 /usr/lib/python2.7/site-packages/NetworkTopologyAggregatorAgent.py -rw-r--r-- 1 root root 18K Apr 16 04:22 /usr/lib/python2.7/site-packages/NorCal.py -rw-r--r-- 1 root root 38K Apr 16 04:22 /usr/lib/python2.7/site-packages/NorCalInit.py -rw-r--r-- 1 root root 2.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/NtpLib.py -rw-r--r-- 1 root root 166 Apr 10 17:48 /usr/lib/python2.7/site-packages/ObjectTrackingAgent.py -rw-r--r-- 1 root root 250 Apr 10 17:48 /usr/lib/python2.7/site-packages/ObjectTrackingLib.py -rw-r--r-- 1 root root 15K Apr 16 02:43 /usr/lib/python2.7/site-packages/OpenStackClientLite.py -rw-r--r-- 1 root root 23K Apr 16 02:43 /usr/lib/python2.7/site-packages/OpenStackPollerLib.py -rw-r--r-- 1 root root 14K Apr 17 10:42 /usr/lib/python2.7/site-packages/OvsdbServerBase.py -rw-r--r-- 1 root root 2.1K Apr 16 02:50 /usr/lib/python2.7/site-packages/PbrLib.py -rw-r--r-- 1 root root 13K Apr 10 17:29 /usr/lib/python2.7/site-packages/Pci.py -rw-r--r-- 1 root root 238 Apr 10 17:37 /usr/lib/python2.7/site-packages/PciBus.py -rw-r--r-- 1 root root 1.6K Apr 10 17:29 /usr/lib/python2.7/site-packages/PciUtil.py -rw-r--r-- 1 root root 1.7K Apr 10 17:39 /usr/lib/python2.7/site-packages/PcieGpioDiagLib.py -rw-r--r-- 1 root root 24K Apr 10 17:53 /usr/lib/python2.7/site-packages/PhyDiagLib.py -rw-r--r-- 1 root root 48K Apr 16 01:51 /usr/lib/python2.7/site-packages/PhyEthtool.py -rw-r--r-- 1 root root 3.6K Apr 10 17:53 /usr/lib/python2.7/site-packages/PhyFruLib.py -rw-r--r-- 1 root root 7.8K Apr 16 04:22 /usr/lib/python2.7/site-packages/PicassoInit.py -rw-r--r-- 1 root root 155 Apr 16 02:13 /usr/lib/python2.7/site-packages/PimAgent.py -rw-r--r-- 1 root root 158 Apr 16 02:25 /usr/lib/python2.7/site-packages/PimBsrAgent.py -rw-r--r-- 1 root root 21K Apr 16 02:25 /usr/lib/python2.7/site-packages/PimBsrModel.py -rw-r--r-- 1 root root 3.1K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimCountersLib.py -rw-r--r-- 1 root root 216 Apr 16 02:13 /usr/lib/python2.7/site-packages/PimLib.py -rw-r--r-- 1 root root 24K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimModel.py -rw-r--r-- 1 root root 23K Apr 16 02:13 /usr/lib/python2.7/site-packages/PimModelLib.py -rw-r--r-- 1 root root 178 Apr 16 03:01 /usr/lib/python2.7/site-packages/PimReg.py -rw-r--r-- 1 root root 2.2K Apr 16 03:01 /usr/lib/python2.7/site-packages/PimRegModel.py -rw-r--r-- 1 root root 177 Apr 16 02:52 /usr/lib/python2.7/site-packages/Pimsm.py -rw-r--r-- 1 root root 32K Apr 16 02:52 /usr/lib/python2.7/site-packages/PimsmModel.py -rw-r--r-- 1 root root 6.5K Apr 16 04:22 /usr/lib/python2.7/site-packages/PlxEepromUpgrade.py -rw-r--r-- 1 root root 3.7K Apr 16 04:22 /usr/lib/python2.7/site-packages/PlxNic.py -rw-r--r-- 1 root root 33K Apr 10 17:42 /usr/lib/python2.7/site-packages/PlxPex8600Lib.py -rw-r--r-- 1 root root 3.3K Apr 10 17:57 /usr/lib/python2.7/site-packages/PmbusConstants.py -rw-r--r-- 1 root root 246 Apr 10 17:57 /usr/lib/python2.7/site-packages/PmbusLib.py -rw-r--r-- 1 root root 1.5K Apr 10 18:02 /usr/lib/python2.7/site-packages/PolicyMap.py -rw-r--r-- 1 root root 2.3K Apr 10 17:54 /usr/lib/python2.7/site-packages/PowerDiagLib.py -rw-r--r-- 1 root root 361 Apr 10 17:54 /usr/lib/python2.7/site-packages/PowerManagerAgent.py -rw-r--r-- 1 root root 16K Apr 10 17:36 /usr/lib/python2.7/site-packages/Prefdl.py -rw-r--r-- 1 root root 135K Apr 10 17:11 /usr/lib/python2.7/site-packages/ProcMgr.py -rw-r--r-- 1 root root 974 Apr 10 17:11 /usr/lib/python2.7/site-packages/ProcMgrLib.py -rw-r--r-- 1 root root 5.0K Apr 10 17:09 /usr/lib/python2.7/site-packages/Profile.py -rw-r--r-- 1 root root 573 Apr 10 17:57 /usr/lib/python2.7/site-packages/PsmiConstants.py -rw-r--r-- 1 root root 23K Apr 10 17:29 /usr/lib/python2.7/site-packages/PsocLib.py -rw-r--r-- 1 root root 306 Apr 10 17:59 /usr/lib/python2.7/site-packages/Ptp.py -rw-r--r-- 1 root root 448 Apr 10 17:59 /usr/lib/python2.7/site-packages/PtpConstants.py -rw-r--r-- 1 root root 210 Apr 10 17:59 /usr/lib/python2.7/site-packages/PtpLib.py -rw-r--r-- 1 root root 1.6K Apr 10 17:25 /usr/lib/python2.7/site-packages/QTraceTestLib.py -rw-r--r-- 1 root root 43K Apr 16 03:39 /usr/lib/python2.7/site-packages/QosLib.py -rw-r--r-- 1 root root 2.2K Apr 16 03:39 /usr/lib/python2.7/site-packages/QosTypes.py -rw-r--r-- 1 root root 4.2K Apr 10 17:09 /usr/lib/python2.7/site-packages/QuickTrace.py -rw-r--r-- 1 root root 15K Apr 16 01:55 /usr/lib/python2.7/site-packages/Radius.py -rw-r--r-- 1 root root 1.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/RadiusGroup.py -rw-r--r-- 1 root root 8.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/RangeRule.py -rw-r--r-- 1 root root 2.3K Apr 10 17:25 /usr/lib/python2.7/site-packages/RecvMsgUtils.py -rw-r--r-- 1 root root 957 Apr 16 02:11 /usr/lib/python2.7/site-packages/RedSupLib.py -rw-r--r-- 1 root root 17K Apr 16 02:11 /usr/lib/python2.7/site-packages/RedSupQueryLib.py -rw-r--r-- 1 root root 8.4K Apr 10 17:18 /usr/lib/python2.7/site-packages/RegexParser.py -rw-r--r-- 1 root root 4.4K Apr 16 02:11 /usr/lib/python2.7/site-packages/ReloadCauseLib.py -rw-r--r-- 1 root root 170 Apr 10 18:26 /usr/lib/python2.7/site-packages/RibAgent.py -rw-r--r-- 1 root root 16K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibCapiLib.py -rw-r--r-- 1 root root 6.1K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibCliLib.py -rw-r--r-- 1 root root 74K Apr 10 18:26 /usr/lib/python2.7/site-packages/RibdDumpParser.py -rw-r--r-- 1 root root 23K Apr 16 01:58 /usr/lib/python2.7/site-packages/RouteMapLib.py -rw-r--r-- 1 root root 6.6K Apr 16 02:19 /usr/lib/python2.7/site-packages/RpcPayloadHeader_pb2.py -rw-r--r-- 1 root root 3.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/RunCli.py -rw-r--r-- 1 root root 2.0K Apr 10 17:57 /usr/lib/python2.7/site-packages/ScdAgentStrings.py -rw-r--r-- 1 root root 598 Apr 10 17:57 /usr/lib/python2.7/site-packages/ScdAgentUtil.py -rw-r--r-- 1 root root 378 Apr 10 17:11 /usr/lib/python2.7/site-packages/ScdEmUtils.py -rw-r--r-- 1 root root 2.3K Apr 10 17:29 /usr/lib/python2.7/site-packages/ScdRegisters.py -rw-r--r-- 1 root root 3.0K Apr 10 18:59 /usr/lib/python2.7/site-packages/Schan.py -rw-r--r-- 1 root root 18K Apr 10 18:59 /usr/lib/python2.7/site-packages/SchanAccelLib.py -rw-r--r-- 1 root root 4.7K Apr 10 18:59 /usr/lib/python2.7/site-packages/SchanMsgLib.py -rw-r--r-- 1 root root 13K Apr 10 17:18 /usr/lib/python2.7/site-packages/SecretCli.py -rw-r--r-- 1 root root 8.7K Apr 10 17:09 /usr/lib/python2.7/site-packages/ServerAnchor.py -rw-r--r-- 1 root root 531 Apr 10 18:43 /usr/lib/python2.7/site-packages/ServiceAgentServiceLib.py -rw-r--r-- 1 root root 779 Apr 10 18:03 /usr/lib/python2.7/site-packages/ServicePluginContext.py -rw-r--r-- 1 root root 1.2K Apr 10 08:08 /usr/lib/python2.7/site-packages/SessionUrlHelper.py -rw-r--r-- 1 root root 6.7K Apr 10 17:18 /usr/lib/python2.7/site-packages/SessionUrlUtil.py -rw-r--r-- 1 root root 8.8K Apr 10 17:18 /usr/lib/python2.7/site-packages/SetRule.py -rw-r--r-- 1 root root 1.2K Apr 16 02:13 /usr/lib/python2.7/site-packages/SflowConst.py -rw-r--r-- 1 root root 9.5K Apr 16 02:13 /usr/lib/python2.7/site-packages/SflowUtil.py -rw-r--r-- 1 root root 161 Apr 16 02:13 /usr/lib/python2.7/site-packages/Sflowtool.py -rw-r--r-- 1 root root 1.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/ShowRunOutputModel.py -rw-r--r-- 1 root root 9.3K Apr 16 04:22 /usr/lib/python2.7/site-packages/Si5338.py -rw-r--r-- 1 root root 2.1K Apr 10 17:09 /usr/lib/python2.7/site-packages/SimpleConfigFile.py -rw-r--r-- 1 root root 3.6K Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashLazyMount.py -rw-r--r-- 1 root root 896 Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashMount.py -rw-r--r-- 1 root root 447 Apr 10 17:14 /usr/lib/python2.7/site-packages/SmashUtils.py -rw-r--r-- 1 root root 1.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusAgent.py -rw-r--r-- 1 root root 5.2K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusClient.py -rw-r--r-- 1 root root 3.8K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusDiagLib.py -rw-r--r-- 1 root root 47K Apr 10 17:39 /usr/lib/python2.7/site-packages/SmbusUtil.py -rw-r--r-- 1 root root 6.2K Apr 16 02:01 /usr/lib/python2.7/site-packages/Snmp.py -rw-r--r-- 1 root root 3.4K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpCliRule.py -rw-r--r-- 1 root root 2.1K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpCliUtil.py -rw-r--r-- 1 root root 590 Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpDebugUtils.py -rw-r--r-- 1 root root 3.3K Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpNotificationRegistrar.py -rw-r--r-- 1 root root 774 Apr 16 02:01 /usr/lib/python2.7/site-packages/SnmpObjectId.py -rw-r--r-- 1 root root 6.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/Sol.py -rw-r--r-- 1 root root 12K Apr 10 19:12 /usr/lib/python2.7/site-packages/SolUtil.py -rw-r--r-- 1 root root 4.2K Apr 10 17:46 /usr/lib/python2.7/site-packages/SslCertKey.py -rw-r--r-- 1 root root 31K Apr 10 17:46 /usr/lib/python2.7/site-packages/SslReactor.py -rw-r--r-- 1 root root 18K Apr 10 17:13 /usr/lib/python2.7/site-packages/StageHelper.py -rw-r--r-- 1 root root 232 Apr 10 17:13 /usr/lib/python2.7/site-packages/StageMgr.py -rw-r--r-- 1 root root 17K Apr 10 18:04 /usr/lib/python2.7/site-packages/StpCliUtil.py -rw-r--r-- 1 root root 1.6K Apr 10 18:04 /usr/lib/python2.7/site-packages/StpConst.py -rw-r--r-- 1 root root 363 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpName.py -rw-r--r-- 1 root root 873 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpStableUtil.py -rw-r--r-- 1 root root 371 Apr 10 18:04 /usr/lib/python2.7/site-packages/StpTopologyName.py -rw-r--r-- 1 root root 3.8K Apr 10 17:09 /usr/lib/python2.7/site-packages/Strace.py -rw-r--r-- 1 root root 6.9K Apr 10 17:18 /usr/lib/python2.7/site-packages/StringRule.py -rw-r--r-- 1 root root 21K Apr 10 17:32 /usr/lib/python2.7/site-packages/SuperServer.py -rw-r--r-- 1 root root 291 Apr 10 17:32 /usr/lib/python2.7/site-packages/SuperServerAgent.py -rw-r--r-- 1 root root 9.5K Apr 10 17:14 /usr/lib/python2.7/site-packages/Switchover.py -rw-r--r-- 1 root root 5.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/SysMgrLib.py -rw-r--r-- 1 root root 2.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/SysMgrLogMsgs.py -rw-r--r-- 1 root root 271 Apr 16 02:03 /usr/lib/python2.7/site-packages/SysMgrSnmp.py -rw-r--r-- 1 root root 878 Apr 10 17:15 /usr/lib/python2.7/site-packages/SysdbAgent.py -rw-r--r-- 1 root root 14K Apr 10 17:15 /usr/lib/python2.7/site-packages/SysdbEntityManager.py -rw-r--r-- 1 root root 4.1K Apr 10 17:13 /usr/lib/python2.7/site-packages/SysdbUtil.py -rw-r--r-- 1 root root 37K Apr 10 17:09 /usr/lib/python2.7/site-packages/TableOutput.py -rw-r--r-- 1 root root 20K Apr 16 01:56 /usr/lib/python2.7/site-packages/Tacacs.py -rw-r--r-- 1 root root 738 Apr 16 01:56 /usr/lib/python2.7/site-packages/TacacsGroup.py -rw-r--r-- 1 root root 2.0K Apr 16 01:56 /usr/lib/python2.7/site-packages/TacacsLib.py -rw-r--r-- 1 root root 15K Apr 16 01:55 /usr/lib/python2.7/site-packages/TcpdumpLib.py -rw-r--r-- 1 root root 384 Apr 16 01:53 /usr/lib/python2.7/site-packages/Terminal.py -rw-r--r-- 1 root root 253 Apr 10 17:44 /usr/lib/python2.7/site-packages/ThermoMgrLib.py -rw-r--r-- 1 root root 369 Apr 10 17:43 /usr/lib/python2.7/site-packages/TopoAgentName.py -rw-r--r-- 1 root root 6.3K Apr 10 17:09 /usr/lib/python2.7/site-packages/TraceLogging.py -rw-r--r-- 1 root root 1.4K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdateCpld.py -rw-r--r-- 1 root root 1.3K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdatePex.py -rw-r--r-- 1 root root 3.7K Apr 16 04:22 /usr/lib/python2.7/site-packages/UpdateUcd.py -rw-r--r-- 1 root root 23K Apr 10 17:18 /usr/lib/python2.7/site-packages/Url.py -rw-r--r-- 1 root root 4.5K Apr 10 17:57 /usr/lib/python2.7/site-packages/UserFpgaUtil.py -rw-r--r-- 1 root root 5.7K Apr 10 17:18 /usr/lib/python2.7/site-packages/UtmpDump.py -rw-r--r-- 1 root root 1.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/Vlan.py -rw-r--r-- 1 root root 2.3K Apr 16 01:50 /usr/lib/python2.7/site-packages/VmAgent.py -rw-r--r-- 1 root root 13K Apr 16 02:21 /usr/lib/python2.7/site-packages/VmTracerEventHandlerLib.py -rw-r--r-- 1 root root 2.2K Apr 10 17:25 /usr/lib/python2.7/site-packages/VrfIdMapTestLib.py -rw-r--r-- 1 root root 279 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanAgent.py -rw-r--r-- 1 root root 270 Apr 10 19:06 /usr/lib/python2.7/site-packages/VxlanController.py -rw-r--r-- 1 root root 212 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanLib.py -rw-r--r-- 1 root root 289 Apr 10 19:19 /usr/lib/python2.7/site-packages/VxlanSwFwdAgent.py -rw-r--r-- 1 root root 4.5K Apr 10 19:06 /usr/lib/python2.7/site-packages/VxlanVniLib.py -rw-r--r-- 1 root root 7.8K Apr 10 17:14 /usr/lib/python2.7/site-packages/WaitForWarmup.py -rw-r--r-- 1 root root 1.8K Apr 10 17:11 /usr/lib/python2.7/site-packages/Watchdog.py -rw-r--r-- 1 root root 705 Apr 16 03:50 /usr/lib/python2.7/site-packages/WbemLib.py -rw-r--r-- 1 root root 15K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrCtrlDiag.py -rw-r--r-- 1 root root 7.9K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrLaneMgrFdlHelper.py -rw-r--r-- 1 root root 1.8K Apr 10 17:51 /usr/lib/python2.7/site-packages/XcvrLib.py -rw-r--r-- 1 root root 54K Apr 18 06:18 /usr/lib/python2.7/site-packages/Xmpp.py -rw-r--r-- 1 root root 4.2K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppLogMsgs.py -rw-r--r-- 1 root root 2.3K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppModelNameReactor.py -rw-r--r-- 1 root root 17K Apr 18 06:18 /usr/lib/python2.7/site-packages/XmppMultiCli.py -rw-r--r-- 1 root root 4.8K Apr 16 02:21 /usr/lib/python2.7/site-packages/ZeroTouch.py -rw-r--r-- 1 root root 400 Apr 16 02:21 /usr/lib/python2.7/site-packages/ZeroTouchBlackList.py -rw-r--r-- 1 root root 730 Apr 10 08:22 /usr/lib/python2.7/site-packages/cpufabric.py -rw-r--r-- 1 root root 1.5K Apr 10 17:29 /usr/lib/python2.7/site-packages/diag_ctypes.py -rwxr-xr-x 1 root root 3.9K Apr 10 17:45 /usr/lib/python2.7/site-packages/dmamem.py -rw-r--r-- 1 root root 126 Aug 11 2010 /usr/lib/python2.7/site-packages/easy_install.py -rw-r--r-- 1 root root 325 Apr 10 17:11 /usr/lib/python2.7/site-packages/fastLoadSetup.py -rw-r--r-- 1 root root 17K Apr 16 01:55 /usr/lib/python2.7/site-packages/freeradiusclient.py -rw-r--r-- 1 root root 2.2K Apr 10 17:25 /usr/lib/python2.7/site-packages/if_ether_arista.py -rw-r--r-- 1 root root 203 Apr 10 18:42 /usr/lib/python2.7/site-packages/issh.py -rw-r--r-- 1 root root 9.2K Apr 16 01:56 /usr/lib/python2.7/site-packages/libtacplus.py -rw-r--r-- 1 root root 113K Apr 10 07:13 /usr/lib/python2.7/site-packages/libvirt.py -rwxr-xr-x 1 root root 7.8K Apr 10 17:49 /usr/lib/python2.7/site-packages/picasso.py -rw-r--r-- 1 root root 87K Aug 11 2010 /usr/lib/python2.7/site-packages/pkg_resources.py -rwxr-xr-x 1 root root 81K Oct 18 2010 /usr/lib/python2.7/site-packages/pyinotify.py -rw-r--r-- 1 root root 14K Apr 10 18:59 /usr/lib/python2.7/site-packages/schan_accel.py -rw-r--r-- 1 root root 3.7K Apr 10 08:08 /usr/lib/python2.7/site-packages/seeprom.py -rw-r--r-- 1 root root 2.4K Aug 11 2010 /usr/lib/python2.7/site-packages/site.py -rw-r--r-- 1 root root 30K Aug 6 2010 /usr/lib/python2.7/site-packages/snack.py -rw-r--r-- 1 root root 2.5K Aug 19 2009 /usr/lib/python2.7/site-packages/sqlitecachec.py
bash-4.1# ls -alh /usr/lib/python2.7/site-packages/CliPlugin/*.py -rw-r--r-- 1 root root 79K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AaaCli.py -rw-r--r-- 1 root root 9.9K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AaaModel.py -rw-r--r-- 1 root root 80K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCli.py -rw-r--r-- 1 root root 13K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModel.py -rw-r--r-- 1 root root 19K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModelImpl.py -rw-r--r-- 1 root root 20K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliModelRender.py -rw-r--r-- 1 root root 29K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCliRules.py -rw-r--r-- 1 root root 46K Apr 10 17:58 /usr/lib/python2.7/site-packages/CliPlugin/AclCmdChains.py -rw-r--r-- 1 root root 4.2K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/AgentPingCli.py -rw-r--r-- 1 root root 4.1K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/AgentResourceCli.py -rw-r--r-- 1 root root 3.8K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/AgentShutdownCli.py -rw-r--r-- 1 root root 1.7K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCliLib.py -rw-r--r-- 1 root root 844 Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCounters.py -rw-r--r-- 1 root root 4.2K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleCpuFabric.py -rw-r--r-- 1 root root 13K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleFibCli.py -rw-r--r-- 1 root root 9.6K Apr 16 04:18 /usr/lib/python2.7/site-packages/CliPlugin/AleRouting.py -rw-r--r-- 1 root root 2.4K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpCommon.py -rw-r--r-- 1 root root 1.6K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/ArpEventMonCli.py -rw-r--r-- 1 root root 34K Apr 16 02:56 /usr/lib/python2.7/site-packages/CliPlugin/ArpInspectionCli.py -rw-r--r-- 1 root root 9.7K Apr 16 02:56 /usr/lib/python2.7/site-packages/CliPlugin/ArpInspectionModels.py -rw-r--r-- 1 root root 9.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIp6Cli.py -rw-r--r-- 1 root root 8.7K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIpCli.py -rw-r--r-- 1 root root 5.2K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpIpIntfCli.py -rw-r--r-- 1 root root 2.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpModel.py -rw-r--r-- 1 root root 1022 Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/ArpShowTechCli.py -rw-r--r-- 1 root root 15K Apr 10 17:37 /usr/lib/python2.7/site-packages/CliPlugin/AsuReloadCli.py -rw-r--r-- 1 root root 15K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/BackupIntfCli.py -rw-r--r-- 1 root root 2.7K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Banner.py -rw-r--r-- 1 root root 8.3K Apr 10 19:12 /usr/lib/python2.7/site-packages/CliPlugin/BeaconLedCli.py -rw-r--r-- 1 root root 40K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/BfdCli.py -rw-r--r-- 1 root root 31K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/BgpCliModels.py -rw-r--r-- 1 root root 9.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/BootCli.py -rw-r--r-- 1 root root 47K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/BridgingCli.py -rw-r--r-- 1 root root 7.9K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/BridgingCliModel.py -rw-r--r-- 1 root root 446 Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/BridgingEtbaCli.py -rw-r--r-- 1 root root 35K Apr 16 01:57 /usr/lib/python2.7/site-packages/CliPlugin/Capi.py -rw-r--r-- 1 root root 8.0K Apr 16 01:57 /usr/lib/python2.7/site-packages/CliPlugin/CapiModel.py -rw-r--r-- 1 root root 13K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliCli.py -rw-r--r-- 1 root root 837 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliCliModel.py -rw-r--r-- 1 root root 847 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/CliError.py -rw-r--r-- 1 root root 17K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/CliSchedulerCli.py -rw-r--r-- 1 root root 9.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/ClockCli.py -rw-r--r-- 1 root root 1.4K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ConfigConvert.py -rw-r--r-- 1 root root 1.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ConfigMgmtMode.py -rw-r--r-- 1 root root 26K Apr 10 08:08 /usr/lib/python2.7/site-packages/CliPlugin/ConfigSessionCli.py -rw-r--r-- 1 root root 5.3K Apr 10 08:08 /usr/lib/python2.7/site-packages/CliPlugin/ConfigSessionModel.py -rw-r--r-- 1 root root 2.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Console.py -rw-r--r-- 1 root root 28K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerCli.py -rw-r--r-- 1 root root 44K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/ControllerDebugCli.py -rw-r--r-- 1 root root 1.6K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/ControllerDebugModel.py -rw-r--r-- 1 root root 19K Apr 10 18:39 /usr/lib/python2.7/site-packages/CliPlugin/ControllerRegistration.py -rw-r--r-- 1 root root 6.3K Apr 10 18:39 /usr/lib/python2.7/site-packages/CliPlugin/ControllerRegistrationModel.py -rw-r--r-- 1 root root 4.5K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerdbLib.py -rw-r--r-- 1 root root 8.4K Apr 10 18:43 /usr/lib/python2.7/site-packages/CliPlugin/ControllerdbModel.py -rw-r--r-- 1 root root 3.2K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/CoredumpControl.py -rw-r--r-- 1 root root 1.5K Apr 10 08:22 /usr/lib/python2.7/site-packages/CliPlugin/CpuFabricCli.py -rw-r--r-- 1 root root 3.1K Apr 10 17:31 /usr/lib/python2.7/site-packages/CliPlugin/DaemonAgentModel.py -rw-r--r-- 1 root root 16K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DcbxCli.py -rw-r--r-- 1 root root 6.9K Apr 10 17:20 /usr/lib/python2.7/site-packages/CliPlugin/DebugMessageCli.py -rw-r--r-- 1 root root 1.4K Apr 10 18:56 /usr/lib/python2.7/site-packages/CliPlugin/DebugServiceCli.py -rw-r--r-- 1 root root 352 Apr 10 17:20 /usr/lib/python2.7/site-packages/CliPlugin/DebugShowTechCli.py -rw-r--r-- 1 root root 984 Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/DebuggingCli.py -rw-r--r-- 1 root root 11K Apr 16 01:50 /usr/lib/python2.7/site-packages/CliPlugin/DecapGroupCli.py -rw-r--r-- 1 root root 25K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DhcpRelayHelperCli.py -rw-r--r-- 1 root root 17K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/DhcpSnoopingCli.py -rw-r--r-- 1 root root 35K Apr 10 17:29 /usr/lib/python2.7/site-packages/CliPlugin/DiagCli.py -rw-r--r-- 1 root root 49K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowCli.py -rw-r--r-- 1 root root 8.8K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowCliLib.py -rw-r--r-- 1 root root 3.5K Apr 16 03:49 /usr/lib/python2.7/site-packages/CliPlugin/DirectFlowModel.py -rw-r--r-- 1 root root 8.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/DonkeyCli.py -rw-r--r-- 1 root root 24K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/Dot1xCli.py -rw-r--r-- 1 root root 8.1K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/Dot1xModel.py -rw-r--r-- 1 root root 6.6K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraEthIntfCli.py -rw-r--r-- 1 root root 5.2K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraEthIntfCliModel.py -rw-r--r-- 1 root root 955 Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/EbraShowTechCli.py -rw-r--r-- 1 root root 1.8K Apr 16 02:10 /usr/lib/python2.7/site-packages/CliPlugin/EbraSnmpCli.py -rw-r--r-- 1 root root 8.0K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/EmailCli.py -rw-r--r-- 1 root root 24K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/EnvironmentCli.py -rw-r--r-- 1 root root 11K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/EnvironmentModels.py -rw-r--r-- 1 root root 22K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/ErrdisableCli.py -rw-r--r-- 1 root root 131K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthIntfCli.py -rw-r--r-- 1 root root 20K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthIntfModel.py -rw-r--r-- 1 root root 949 Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/EthShowTechCli.py -rw-r--r-- 1 root root 15K Apr 10 17:55 /usr/lib/python2.7/site-packages/CliPlugin/EventCli.py -rw-r--r-- 1 root root 19K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/EventMonCli.py -rw-r--r-- 1 root root 12K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ExtensionMgrCli.py -rw-r--r-- 1 root root 6.4K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ExtensionMgrCliModel.py -rw-r--r-- 1 root root 1.1K Apr 10 17:32 /usr/lib/python2.7/site-packages/CliPlugin/FaultInjectionCli.py -rw-r--r-- 1 root root 98K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/FhrpCli.py -rw-r--r-- 1 root root 14K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/FhrpModels.py -rw-r--r-- 1 root root 49K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/FileCli.py -rw-r--r-- 1 root root 5.3K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/FileCliModels.py -rw-r--r-- 1 root root 11K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FileSystemMountCli.py -rw-r--r-- 1 root root 27K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FruCli.py -rw-r--r-- 1 root root 11K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/FruModel.py -rw-r--r-- 1 root root 14K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfCli.py -rw-r--r-- 1 root root 2.2K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfIntfCli.py -rw-r--r-- 1 root root 6.2K Apr 16 02:24 /usr/lib/python2.7/site-packages/CliPlugin/FsfModels.py -rw-r--r-- 1 root root 8.3K Apr 10 17:47 /usr/lib/python2.7/site-packages/CliPlugin/GatedBgpCli.py -rw-r--r-- 1 root root 2.0K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/GmpCli.py -rw-r--r-- 1 root root 54K Apr 16 02:19 /usr/lib/python2.7/site-packages/CliPlugin/HadoopTracerCli.py -rw-r--r-- 1 root root 44K Apr 16 02:19 /usr/lib/python2.7/site-packages/CliPlugin/HadoopTracerModel.py -rw-r--r-- 1 root root 33K Apr 17 10:42 /usr/lib/python2.7/site-packages/CliPlugin/HscCli.py -rw-r--r-- 1 root root 25K Apr 17 10:42 /usr/lib/python2.7/site-packages/CliPlugin/HscModel.py -rw-r--r-- 1 root root 64K Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpCli.py -rw-r--r-- 1 root root 17K Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpCliModel.py -rw-r--r-- 1 root root 23K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyCli.py -rw-r--r-- 1 root root 7.3K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyModel.py -rw-r--r-- 1 root root 438 Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/IgmpHostProxyShowTechCli.py -rw-r--r-- 1 root root 7.3K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpProfileCli.py -rw-r--r-- 1 root root 495 Apr 10 18:57 /usr/lib/python2.7/site-packages/CliPlugin/IgmpShowTechCli.py -rw-r--r-- 1 root root 96K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingCli.py -rw-r--r-- 1 root root 1.5K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingDebugCli.py -rw-r--r-- 1 root root 6.7K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingEtbaCli.py -rw-r--r-- 1 root root 1.8K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingEventMonCli.py -rw-r--r-- 1 root root 1.2K Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingIntfJanitor.py -rw-r--r-- 1 root root 700 Apr 10 18:07 /usr/lib/python2.7/site-packages/CliPlugin/IgmpSnoopingShowTechCli.py -rw-r--r-- 1 root root 16K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/InstallCli.py -rw-r--r-- 1 root root 72K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfCli.py -rw-r--r-- 1 root root 17K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfModel.py -rw-r--r-- 1 root root 13K Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfRangeCli.py -rw-r--r-- 1 root root 429 Apr 10 17:34 /usr/lib/python2.7/site-packages/CliPlugin/IntfShowTechCli.py -rw-r--r-- 1 root root 4.1K Apr 16 02:06 /usr/lib/python2.7/site-packages/CliPlugin/IntfSnmpCli.py -rw-r--r-- 1 root root 5.0K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/Ip6Addr.py -rw-r--r-- 1 root root 36K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Ip6RaCli.py -rw-r--r-- 1 root root 15K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/IpAddr.py -rw-r--r-- 1 root root 16K Apr 16 01:48 /usr/lib/python2.7/site-packages/CliPlugin/IpEth.py -rw-r--r-- 1 root root 6.5K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/IpGenAddr.py -rw-r--r-- 1 root root 849 Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraCommonCli.py -rw-r--r-- 1 root root 2.3K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraEtbaCli.py -rw-r--r-- 1 root root 55K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6Cli.py -rw-r--r-- 1 root root 24K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6IntfCli.py -rw-r--r-- 1 root root 15K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIp6Model.py -rw-r--r-- 1 root root 80K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpCli.py -rw-r--r-- 1 root root 34K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpIntfCli.py -rw-r--r-- 1 root root 13K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraIpModel.py -rw-r--r-- 1 root root 12K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraKernelIpCli.py -rw-r--r-- 1 root root 7.0K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraNexthopGroupModel.py -rw-r--r-- 1 root root 32K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraRouteCommon.py -rw-r--r-- 1 root root 1.2K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraShowTechCli.py -rw-r--r-- 1 root root 6.8K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraUrpfCli.py -rw-r--r-- 1 root root 26K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/IraVrfCli.py -rw-r--r-- 1 root root 4.7K Apr 10 17:56 /usr/lib/python2.7/site-packages/CliPlugin/KernelFibCli.py -rw-r--r-- 1 root root 87K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagCli.py -rw-r--r-- 1 root root 20K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfCli.py -rw-r--r-- 1 root root 3.2K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfMlagCli.py -rw-r--r-- 1 root root 4.3K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagIntfModel.py -rw-r--r-- 1 root root 656 Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/LagShowTechCli.py -rw-r--r-- 1 root root 42K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzCli.py -rw-r--r-- 1 root root 34K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzCliModel.py -rw-r--r-- 1 root root 13K Apr 16 03:52 /usr/lib/python2.7/site-packages/CliPlugin/LanzIntfCli.py -rw-r--r-- 1 root root 15K Apr 10 17:31 /usr/lib/python2.7/site-packages/CliPlugin/LauncherDaemonCli.py -rw-r--r-- 1 root root 13K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/LinkFlapCli.py -rw-r--r-- 1 root root 9.2K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpConfigCli.py -rw-r--r-- 1 root root 7.4K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpModel.py -rw-r--r-- 1 root root 32K Apr 16 02:18 /usr/lib/python2.7/site-packages/CliPlugin/LldpStatusCli.py -rw-r--r-- 1 root root 551 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/LoadPlugins.py -rw-r--r-- 1 root root 59K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/LoggingCli.py -rw-r--r-- 1 root root 19K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/LoopProtectCli.py -rw-r--r-- 1 root root 11K Apr 10 18:16 /usr/lib/python2.7/site-packages/CliPlugin/LoopProtectModels.py -rw-r--r-- 1 root root 7.5K Apr 10 17:44 /usr/lib/python2.7/site-packages/CliPlugin/LoopbackIntfCli.py -rw-r--r-- 1 root root 927 Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/MacAddr.py -rw-r--r-- 1 root root 1.5K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/MacEventMonCli.py -rw-r--r-- 1 root root 4.9K Apr 10 17:45 /usr/lib/python2.7/site-packages/CliPlugin/MacFlapCli.py -rw-r--r-- 1 root root 1.6K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/MacLearning.py -rw-r--r-- 1 root root 7.8K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ManagementActiveIntfCli.py -rw-r--r-- 1 root root 8.9K Apr 10 18:00 /usr/lib/python2.7/site-packages/CliPlugin/McastBoundaryCli.py -rw-r--r-- 1 root root 2.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/MgmtDefaults.py -rw-r--r-- 1 root root 38K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/MirroringCli.py -rw-r--r-- 1 root root 7.0K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/MirroringModels.py -rw-r--r-- 1 root root 24K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagConfigCli.py -rw-r--r-- 1 root root 18K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagModel.py -rw-r--r-- 1 root root 19K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagShowCli.py -rw-r--r-- 1 root root 2.6K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagTunnelCli.py -rw-r--r-- 1 root root 1.3K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagTunnelModel.py -rw-r--r-- 1 root root 3.0K Apr 16 02:54 /usr/lib/python2.7/site-packages/CliPlugin/MlagVrrpCli.py -rw-r--r-- 1 root root 731 Apr 16 02:54 /usr/lib/python2.7/site-packages/CliPlugin/MlagVrrpModels.py -rw-r--r-- 1 root root 17K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/MlagWarningCli.py -rw-r--r-- 1 root root 5.9K Apr 10 18:42 /usr/lib/python2.7/site-packages/CliPlugin/ModuleCli.py -rw-r--r-- 1 root root 1.7K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ModuleIntfCli.py -rw-r--r-- 1 root root 3.5K Apr 10 18:42 /usr/lib/python2.7/site-packages/CliPlugin/ModuleModels.py -rw-r--r-- 1 root root 4.1K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/MonitoredNexthopCli.py -rw-r--r-- 1 root root 1.5K Apr 16 01:43 /usr/lib/python2.7/site-packages/CliPlugin/MonitoredNexthopModel.py -rw-r--r-- 1 root root 7.0K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/MoreCli.py -rw-r--r-- 1 root root 24K Apr 17 09:43 /usr/lib/python2.7/site-packages/CliPlugin/MplsCli.py -rw-r--r-- 1 root root 11K Apr 17 09:43 /usr/lib/python2.7/site-packages/CliPlugin/MplsModel.py -rw-r--r-- 1 root root 8.9K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/MribConfigCli.py -rw-r--r-- 1 root root 37K Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteCli.py -rw-r--r-- 1 root root 2.1K Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteEtbaCli.py -rw-r--r-- 1 root root 1.9K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/MrouteEventMonCli.py -rw-r--r-- 1 root root 414 Apr 16 01:52 /usr/lib/python2.7/site-packages/CliPlugin/MrouteShowTechCli.py -rw-r--r-- 1 root root 32K Apr 16 03:12 /usr/lib/python2.7/site-packages/CliPlugin/MsdpCli.py -rw-r--r-- 1 root root 48K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpCli.py -rw-r--r-- 1 root root 29K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpModels.py -rw-r--r-- 1 root root 3.0K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MsrpStream.py -rw-r--r-- 1 root root 10K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MvrpCli.py -rw-r--r-- 1 root root 12K Apr 10 18:09 /usr/lib/python2.7/site-packages/CliPlugin/MvrpModels.py -rw-r--r-- 1 root root 22K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/NetworkCli.py -rw-r--r-- 1 root root 35K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/NetworkToolsCli.py -rw-r--r-- 1 root root 3.6K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopology.py -rw-r--r-- 1 root root 6.5K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopologyModels.py -rw-r--r-- 1 root root 3.1K Apr 10 19:22 /usr/lib/python2.7/site-packages/CliPlugin/NetworkTopologyService.py -rw-r--r-- 1 root root 6.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/NetworkUrlCli.py -rw-r--r-- 1 root root 19K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/Ntp.py -rw-r--r-- 1 root root 9.1K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/OldDhcpRelayCli.py -rw-r--r-- 1 root root 46K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowCli.py -rw-r--r-- 1 root root 28K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowCliLib.py -rw-r--r-- 1 root root 34K Apr 16 03:48 /usr/lib/python2.7/site-packages/CliPlugin/OpenFlowModel.py -rw-r--r-- 1 root root 91K Apr 16 02:43 /usr/lib/python2.7/site-packages/CliPlugin/OpenStack.py -rw-r--r-- 1 root root 41K Apr 16 02:43 /usr/lib/python2.7/site-packages/CliPlugin/OpenStackModels.py -rw-r--r-- 1 root root 15K Apr 16 02:20 /usr/lib/python2.7/site-packages/CliPlugin/OspfCliModels.py -rw-r--r-- 1 root root 9.2K Apr 10 17:37 /usr/lib/python2.7/site-packages/CliPlugin/PciCli.py -rw-r--r-- 1 root root 4.2K Apr 10 17:41 /usr/lib/python2.7/site-packages/CliPlugin/PcieNtCli.py -rw-r--r-- 1 root root 2.4K Apr 10 18:14 /usr/lib/python2.7/site-packages/CliPlugin/PeerIntfCli.py -rw-r--r-- 1 root root 13K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PfcCli.py -rw-r--r-- 1 root root 33K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/PhysicalIntfRule.py -rw-r--r-- 1 root root 28K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PimBsrConfigCli.py -rw-r--r-- 1 root root 8.5K Apr 16 02:25 /usr/lib/python2.7/site-packages/CliPlugin/PimBsrShowCli.py -rw-r--r-- 1 root root 1.7K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimClearCli.py -rw-r--r-- 1 root root 27K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimCliLib.py -rw-r--r-- 1 root root 9.3K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimConfigCheckModel.py -rw-r--r-- 1 root root 14K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimConfigCli.py -rw-r--r-- 1 root root 870 Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimIntfJanitor.py -rw-r--r-- 1 root root 5.8K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegConfigCheck.py -rw-r--r-- 1 root root 5.8K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegConfigCli.py -rw-r--r-- 1 root root 3.5K Apr 16 03:01 /usr/lib/python2.7/site-packages/CliPlugin/PimRegShowCli.py -rw-r--r-- 1 root root 12K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimShowCli.py -rw-r--r-- 1 root root 567 Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/PimShowTechCli.py -rw-r--r-- 1 root root 3.8K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliClear.py -rw-r--r-- 1 root root 9.6K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliConfig.py -rw-r--r-- 1 root root 1.2K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliLib.py -rw-r--r-- 1 root root 26K Apr 16 02:52 /usr/lib/python2.7/site-packages/CliPlugin/PimsmCliShow.py -rw-r--r-- 1 root root 1.9K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/PmbusCli.py -rw-r--r-- 1 root root 63K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapCliLib.py -rw-r--r-- 1 root root 11K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapModel.py -rw-r--r-- 1 root root 20K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PolicyMapModelImpl.py -rw-r--r-- 1 root root 19K Apr 10 17:45 /usr/lib/python2.7/site-packages/CliPlugin/PortSecCli.py -rw-r--r-- 1 root root 22K Apr 10 17:54 /usr/lib/python2.7/site-packages/CliPlugin/PowerCli.py -rw-r--r-- 1 root root 1.8K Apr 10 17:54 /usr/lib/python2.7/site-packages/CliPlugin/PowerDiagsCli.py -rw-r--r-- 1 root root 1.4K Apr 10 17:57 /usr/lib/python2.7/site-packages/CliPlugin/PsmiCli.py -rw-r--r-- 1 root root 84K Apr 10 17:59 /usr/lib/python2.7/site-packages/CliPlugin/PtpCli.py -rw-r--r-- 1 root root 609 Apr 10 17:59 /usr/lib/python2.7/site-packages/CliPlugin/PtpIntfJanitor.py -rw-r--r-- 1 root root 12K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PtpTimeSyncCli.py -rw-r--r-- 1 root root 5.2K Apr 10 18:02 /usr/lib/python2.7/site-packages/CliPlugin/PtpTimeSyncModel.py -rw-r--r-- 1 root root 213K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCli.py -rw-r--r-- 1 root root 24K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCliLib.py -rw-r--r-- 1 root root 39K Apr 16 03:39 /usr/lib/python2.7/site-packages/CliPlugin/QosCliModel.py -rw-r--r-- 1 root root 2.5K Apr 16 03:44 /usr/lib/python2.7/site-packages/CliPlugin/QosSnmp.py -rw-r--r-- 1 root root 21K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/RadiusCli.py -rw-r--r-- 1 root root 66K Apr 16 02:50 /usr/lib/python2.7/site-packages/CliPlugin/ReachabilityMonitorCli.py -rw-r--r-- 1 root root 38K Apr 16 02:50 /usr/lib/python2.7/site-packages/CliPlugin/ReachabilityMonitorModel.py -rw-r--r-- 1 root root 17K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupCli.py -rw-r--r-- 1 root root 804 Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupCliFormatSpec.py -rw-r--r-- 1 root root 2.2K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupFileCli.py -rw-r--r-- 1 root root 7.0K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/RedSupModels.py -rw-r--r-- 1 root root 5.1K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ReloadCauseCli.py -rw-r--r-- 1 root root 17K Apr 10 17:36 /usr/lib/python2.7/site-packages/CliPlugin/ReloadCli.py -rw-r--r-- 1 root root 4.7K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/ReloadConfigSaveCli.py -rw-r--r-- 1 root root 2.4K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ReloadElectionCli.py -rw-r--r-- 1 root root 5.1K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/ReloadFileSyncCli.py -rw-r--r-- 1 root root 4.7K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibIp6Cli.py -rw-r--r-- 1 root root 4.8K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibIpCli.py -rw-r--r-- 1 root root 5.0K Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RibShowTechCli.py -rw-r--r-- 1 root root 446 Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/RipShowTechCli.py -rw-r--r-- 1 root root 3.3K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/RouteDistinguisher.py -rw-r--r-- 1 root root 1.3K Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/RouteEventMonCli.py -rw-r--r-- 1 root root 106K Apr 16 01:58 /usr/lib/python2.7/site-packages/CliPlugin/RouteMapCli.py -rw-r--r-- 1 root root 19K Apr 16 01:58 /usr/lib/python2.7/site-packages/CliPlugin/RouteMapCliModels.py -rw-r--r-- 1 root root 190K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/RoutingBgpCli.py -rw-r--r-- 1 root root 68K Apr 16 02:38 /usr/lib/python2.7/site-packages/CliPlugin/RoutingBgpShowCli.py -rw-r--r-- 1 root root 1017 Apr 10 18:26 /usr/lib/python2.7/site-packages/CliPlugin/RoutingCommon.py -rw-r--r-- 1 root root 65K Apr 16 02:03 /usr/lib/python2.7/site-packages/CliPlugin/RoutingIsisCli.py -rw-r--r-- 1 root root 115K Apr 16 02:35 /usr/lib/python2.7/site-packages/CliPlugin/RoutingOspf3Cli.py -rw-r--r-- 1 root root 195K Apr 16 02:20 /usr/lib/python2.7/site-packages/CliPlugin/RoutingOspfCli.py -rw-r--r-- 1 root root 23K Apr 16 02:02 /usr/lib/python2.7/site-packages/CliPlugin/RoutingRipCli.py -rw-r--r-- 1 root root 2.4K Apr 16 03:24 /usr/lib/python2.7/site-packages/CliPlugin/RoutingSnmp.py -rw-r--r-- 1 root root 1.2K Apr 10 18:59 /usr/lib/python2.7/site-packages/CliPlugin/SchanAccelCli.py -rw-r--r-- 1 root root 2.1K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/SectionCliLib.py -rw-r--r-- 1 root root 8.0K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/Security.py -rw-r--r-- 1 root root 1.8K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/SendCli.py -rw-r--r-- 1 root root 15K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/SessionCli.py -rw-r--r-- 1 root root 29K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowCli.py -rw-r--r-- 1 root root 1.5K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowIntfJanitor.py -rw-r--r-- 1 root root 13K Apr 16 02:13 /usr/lib/python2.7/site-packages/CliPlugin/SflowModel.py -rw-r--r-- 1 root root 3.0K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/ShellCli.py -rw-r--r-- 1 root root 3.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/ShowProcesses.py -rw-r--r-- 1 root root 625 Apr 10 17:35 /usr/lib/python2.7/site-packages/CliPlugin/ShowRunModel.py -rw-r--r-- 1 root root 3.2K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/ShowTechSupportCmds.py -rw-r--r-- 1 root root 1.2K Apr 10 07:55 /usr/lib/python2.7/site-packages/CliPlugin/SmashCli.py -rw-r--r-- 1 root root 87K Apr 16 02:01 /usr/lib/python2.7/site-packages/CliPlugin/SnmpCli.py -rw-r--r-- 1 root root 46K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Ssh.py -rw-r--r-- 1 root root 13K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/Ssl.py -rw-r--r-- 1 root root 4.0K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/SslCliLib.py -rw-r--r-- 1 root root 11K Apr 10 17:46 /usr/lib/python2.7/site-packages/CliPlugin/SslModel.py -rw-r--r-- 1 root root 1.1K Apr 10 18:35 /usr/lib/python2.7/site-packages/CliPlugin/StartupConfigError.py -rw-r--r-- 1 root root 22K Apr 16 01:54 /usr/lib/python2.7/site-packages/CliPlugin/StormControlCli.py -rw-r--r-- 1 root root 6.1K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpClear.py -rw-r--r-- 1 root root 33K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpCli.py -rw-r--r-- 1 root root 3.1K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpCliLib.py -rw-r--r-- 1 root root 26K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpIntfCli.py -rw-r--r-- 1 root root 3.7K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpIntfJanitor.py -rw-r--r-- 1 root root 46K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpModels.py -rw-r--r-- 1 root root 57K Apr 10 18:04 /usr/lib/python2.7/site-packages/CliPlugin/StpShow.py -rw-r--r-- 1 root root 14K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/SubIntfCli.py -rw-r--r-- 1 root root 2.3K Apr 16 02:11 /usr/lib/python2.7/site-packages/CliPlugin/SupeSessionCli.py -rw-r--r-- 1 root root 1.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/SwitchIntfCli.py -rw-r--r-- 1 root root 1.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/SysMgrCliLib.py -rw-r--r-- 1 root root 3.6K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/SysMgrModels.py -rw-r--r-- 1 root root 18K Apr 16 01:56 /usr/lib/python2.7/site-packages/CliPlugin/TacacsCli.py -rw-r--r-- 1 root root 4.9K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TaggedPdu.py -rw-r--r-- 1 root root 45K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggIntfCli.py -rw-r--r-- 1 root root 17K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggModels.py -rw-r--r-- 1 root root 48K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapCli.py -rw-r--r-- 1 root root 4.1K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapCliLib.py -rw-r--r-- 1 root root 1.8K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapModel.py -rw-r--r-- 1 root root 1.7K Apr 10 18:12 /usr/lib/python2.7/site-packages/CliPlugin/TapAggPmapModelImpl.py -rw-r--r-- 1 root root 22K Apr 16 01:55 /usr/lib/python2.7/site-packages/CliPlugin/TcpdumpCli.py -rw-r--r-- 1 root root 6.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/TechSupportCli.py -rw-r--r-- 1 root root 9.3K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/Telnet.py -rw-r--r-- 1 root root 2.5K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TopoModel.py -rw-r--r-- 1 root root 4.3K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/TopoShow.py -rw-r--r-- 1 root root 6.0K Apr 10 17:48 /usr/lib/python2.7/site-packages/CliPlugin/TrackingCli.py -rw-r--r-- 1 root root 12K Apr 10 17:39 /usr/lib/python2.7/site-packages/CliPlugin/UplinkFailureDetectionCli.py -rw-r--r-- 1 root root 6.0K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/VersionCli.py -rw-r--r-- 1 root root 5.5K Apr 18 19:04 /usr/lib/python2.7/site-packages/CliPlugin/VersionModel.py -rw-r--r-- 1 root root 9.8K Apr 10 18:06 /usr/lib/python2.7/site-packages/CliPlugin/VirtualCableCli.py -rw-r--r-- 1 root root 4.7K Apr 10 17:25 /usr/lib/python2.7/site-packages/CliPlugin/VirtualIntfRule.py -rw-r--r-- 1 root root 100K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanCli.py -rw-r--r-- 1 root root 21K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanIntfCli.py -rw-r--r-- 1 root root 6.0K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanIntfModel.py -rw-r--r-- 1 root root 24K Apr 10 17:43 /usr/lib/python2.7/site-packages/CliPlugin/VlanModel.py -rw-r--r-- 1 root root 25K Apr 16 01:50 /usr/lib/python2.7/site-packages/CliPlugin/Vm.py -rw-r--r-- 1 root root 55K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerCli.py -rw-r--r-- 1 root root 3.1K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerIntfCli.py -rw-r--r-- 1 root root 19K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/VmTracerModels.py -rw-r--r-- 1 root root 79K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanCli.py -rw-r--r-- 1 root root 26K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanControllerCli.py -rw-r--r-- 1 root root 11K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanControllerModel.py -rw-r--r-- 1 root root 7.9K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanIntfModel.py -rw-r--r-- 1 root root 17K Apr 10 19:19 /usr/lib/python2.7/site-packages/CliPlugin/VxlanModel.py -rw-r--r-- 1 root root 1.7K Apr 10 19:06 /usr/lib/python2.7/site-packages/CliPlugin/VxlanVni.py -rw-r--r-- 1 root root 7.2K Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/WaitForWarmupCli.py -rw-r--r-- 1 root root 13K Apr 16 01:53 /usr/lib/python2.7/site-packages/CliPlugin/WatchCli.py -rw-r--r-- 1 root root 8.5K Apr 16 03:50 /usr/lib/python2.7/site-packages/CliPlugin/Wbem.py -rw-r--r-- 1 root root 21K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrCli.py -rw-r--r-- 1 root root 3.1K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrConfigCli.py -rw-r--r-- 1 root root 12K Apr 10 17:51 /usr/lib/python2.7/site-packages/CliPlugin/XcvrModel.py -rw-r--r-- 1 root root 23K Apr 18 06:18 /usr/lib/python2.7/site-packages/CliPlugin/Xmpp.py -rw-r--r-- 1 root root 4.5K Apr 18 06:18 /usr/lib/python2.7/site-packages/CliPlugin/XmppModel.py -rw-r--r-- 1 root root 6.8K Apr 16 02:21 /usr/lib/python2.7/site-packages/CliPlugin/ZeroTouch.py -rw-r--r-- 1 root root 0 Apr 10 17:18 /usr/lib/python2.7/site-packages/CliPlugin/__init__.py
コードの一例
[kotetsu@veos-dev site-packages]$ cat EthIntf.py
# Copyright (c) 2006-2010 Arista Networks, Inc. All rights reserved. # Arista Networks, Inc. Confidential and Proprietary. """ This is the top-level Python module for the EthIntf library. It contains some constants related to frame sizes. """ from eunuchs.if_ether_h import ETH_FCS_LEN from eunuchs.if_vlan_h import VLAN_ETH_HLEN MAX_SUPPORTED_FRAME_SIZE = 9236 MAX_SUPPORTED_MTU = MAX_SUPPORTED_FRAME_SIZE - VLAN_ETH_HLEN - ETH_FCS_LEN # 9214 MAX_MGMT_MTU = 1500 # BUG5808 [kotetsu@veos-dev site-packages]$
以下は /usr/lib/python2.7/site-packages/SysdbPlugin/SysdbEthPortId.py
から抜粋
if interface in ( 'Port-Channel', 'PeerPort-Channel' ): # BUG4544: Further discussion is needed regarding port Id assignment # of channel groups. # Linecard numbers start at 3, so the desired port Ids for linecard # ports are 301 - 1500, assuming maximum of 8 cards and 150 ports per # card. Starting at 100 won't conflict with physical ports until # there are more than 200 Port-Channels. baseId = 100 elif interface == 'PeerEthernet': if linecard > 2: # Interface on a modular linecard. # Starting at 1501 will not conflict with physical ports on M8 baseId = 1500 + 150 * ( linecard - 3 ) + port else: baseId = 200 + port elif interface == 'Management': if linecard == 0: if port == 0: # Management0 does not need an intf id because it is a # virtual interface and not used in LLDP. t0( "Interface", intf, "does not need a port id" ) return 0 # Using 97 - 99 for management interfaces on fixed # systems. This lower range is selected to not make # 'PortList' (in MIBs) big. It leaves 1 - 96 for ethernet # interfaces. baseId = 96 + port else: # On modular the first front-panel port is on a linecard, # so ports 1-99 are free. We will make use of 1-4. # Assumes only two management ports per supervisor. assert port in [ 1, 2 ] baseId = port + ( ( linecard - 1 ) * 2 ) elif interface == 'Vxlan': t0( 'Vxlan interface %s' % intf ) baseId = 2000 + port else: assert interface == 'Ethernet' if subPort > 0: # I'm assuming at most 4 subPorts per port. This is true for the # qsfp linecards, where we have linecard/qsfp/subport. However, if # we have a 100G connector, there will be more subPorts (12?). baseId = port * 4 + subPort else: baseId = port if linecard > 0: baseId = baseId + ( linecard * 150 )
参考
Python が入っていない NW 機器も Ansible で (一応) 制御できる (original : 2015/02/15)
この記事は某所で 2015/02/15
に書いたもののコピーです。
そのため 2017/05/13
時点ではやや古い情報も含まれています。(以下一例)
Ansible
のバージョンが当時の1.8
から2.3
くらいまであがっているので、挙動が異なる部分がある筈
.
概要
本項でやること
target に python が入っていなくても ssh 接続可能ならば Ansible で一応制御できる、ということを軽く確認します。 Linux ベースではないネットワーク機器(Cisco IOS etc)などで使える筈です。
気をつけること(≒結論)
ansible:1.8.2
では、以下を満たせばいける筈です。
gather_facts
はno
にすること- コマンド実行 module は
raw
を使うこと (shell
やcommand
ではない) ssh
のcommand
で target にリモートコマンド実行できること
参考情報(公式より)
何でコマンド実行 module として raw
を使うのか
Ansible の config ファイルで使える ssh 系のオプション設定
環境情報
Ansible
target device (NW機器)
Python が入っていない NW 機器代表として Juniper Firefly を使いました。 FreeBSD ベースではありますが。
- OS:12.1X47-D10.4
サンプル
設定ファイル/Playbook
hosts
実行時に --ask-pass
とか使ったり、環境変数を使ったりでパスワードベタ書きは回避可能です。
[junos] 192.168.101.70 [junos:vars] ansible_ssh_user=kotetsu ansible_ssh_pass=kotetsu
ansible.cfg
ssh 接続に Paramiko と OpenSSH のいずれを使うか、という話がありますが…今回はオプションが豊富な OpenSSH を使っています。
[defaults] transport=ssh [ssh_connection] ssh_args= -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ControlMaster=no -o ControlPersist=60s scp_if_ssh=false
Playbook
単純に ssh の command で show version | no-more
を実行して、結果を debug で表示させるだけです。
- name: not support Python node hosts: junos gather_facts: no sudo: false tasks: - name: show version raw: show version | no-more register: output_show_version - debug: var=output_show_version
実行例
$ ansible-playbook playbook_junos.yml -i hosts PLAY [not support Python node] ************************************************ TASK: [show version] ********************************************************** ok: [192.168.101.70] TASK: [debug var=output_show_version] ***************************************** ok: [192.168.101.70] => { "output_show_version": { "invocation": { "module_args": "show version | no-more", "module_name": "raw" }, "rc": 0, "stderr": "", "stdout": "Could not chdir to home directory /var/home/kotetsu: No such file or directory\r\nHostname: fw01\r\nModel: firefly-perimeter\r\nJUNOS Software Release [12.1X47-D10.4]\r\n", "stdout_lines": [ "Could not chdir to home directory /var/home/kotetsu: No such file or directory", "Hostname: fw01", "Model: firefly-perimeter", "JUNOS Software Release [12.1X47-D10.4]" ] } } PLAY RECAP ******************************************************************** 192.168.101.70 : ok=2 changed=0 unreachable=0 failed=0