ARISTA vEOS に jq を入れて使う (小ネタ)
小ネタです。twitter で「Arista に jq 欲しい」って話を見かけたので「確かに vEOS デフォルトで入ってなくて、入れりゃー使えるけど(この記事)...最初から入っていて欲しいよなあ」というだけのお話。
環境
いつも通り(3年ぶり)の vEOS ですぞな。
localhost#show version Arista vEOS Hardware version: Serial number: System MAC address: 0021.96aa.9b52 Software image version: 4.20.1F Architecture: i386 Internal build version: 4.20.1F-6820520.4201F Internal build ID: 790a11e8-5aaf-4be7-a11a-e61795d05b91 Uptime: 2 minutes Total memory: 2017260 kB Free memory: 1259404 kB [admin@localhost ~]$ uname -a Linux localhost 3.18.28.Ar-6765725.4201F #1 SMP PREEMPT Wed Nov 15 09:47:13 PST 2017 x86_64 x86_64 x86_64 GNU/Linux
インストール
前述の環境では一応 /etc/yum
配下が揃っていそうなのですが、ササッと binary ファイル取ってきて PATH 通ったところに放り込む感じで。
まず curl でインターネッツからとってこれるように DNS キャッシュサーバと Ma1
の IP アドレスくらいを EOS で設定して。
ip name-server vrf default <DNSキャッシュサーバの IP address> ! interface Management1 ip address <EOS の IPv4 アドレス(DHCPでも)> ! ip route 0.0.0.0/0 <インターネッツに抜ける Gateway IP address>
bash
におりて binary ファイルを取ってくるだけ。
localhost#bash Arista Networks EOS shell [admin@localhost ~]$ [admin@localhost tmp]$ cd /var/tmp [admin@localhost tmp]$ curl -LO https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 [admin@localhost tmp]$ ll total 2964 drwxrwxrwt 4 root root 100 Nov 29 13:30 agents drwxrwxrwx 2 root root 40 Nov 29 13:19 cli -rw-r--r-- 1 admin eosadmin 3027945 Nov 29 13:40 jq-linux64 -rw-rw-rw- 1 root root 2 Nov 29 13:20 startup-config.loaded [admin@localhost tmp]$ sudo cp jq-linux64 /bin/jq [admin@localhost tmp]$ sudo chmod 755 /bin/jq [admin@localhost ~]$ which jq /bin/jq
EOS から使う
後はお好きなように。EOS シェル側に戻れば、ほいこの通り。
localhost#show int | json | jq '.interfaces[] | [.name, .lineProtocolStatus]' [ "Management1", "up" ] [ "Ethernet2", "up" ] [ "Ethernet3", "up" ] [ "Ethernet1", "up" ]
最後に
僕も EOS にデフォルトで入れておいて欲しいです。 (EOS ならばお手軽に eAPI を突いてスクリプト言語の json ライブラリで処理する、のが常道なのかも知れないけど...shell だけでチョチョイとやりたいことも多々あるよね)