それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

jid / json のjq的なクエリをインタラクティブに試せるツール

jid が便利そうなので使ってみた

jid-github

インストール

brew install jid

使ってみる

jid は json を食わせて、その結果から必要なものを絞り込んで調べることができる

試しに使ってみる。

echo '{"info":{"date":"2016-10-23","version":1.0},\
"users":[{"name":"simeji","uri":"https://github.com/simeji","id":1},\
{"name":"simeji2","uri":"https://example.com/simeji","id":2},\
{"name":"simeji3","uri":"https://example.com/simeji3","id":3}],"userCount":3}}' \
| jid

TAB で補完

TABキーを使うと候補が絞り込めて楽チン。

f:id:takuya_1st:20180819030947p:plain

検索だけなら jq より便利かも

jq は検索だけでなく、結合や計算や書き換えといった機能が豊富で、高機能すぎるので、どうしても複雑なところがあって直感的じゃない。

なので、このjidだと絞り込みはすごく楽だった。特定の配列をみたい時にはjid を使う方が早い

毎回ゼロからクエリ書くと面倒なので

cat test.json | jid '.info'

このように最初から引数値を与えることで、検索ができるようになっていて素晴らしい。

jq ように出力する

作ったクエリをjq として出したい時は

cat test.json | jid -q '.users'

のように作っておけば、jq に再利用が可能なクエリ文字列が出てきて便利だな。

キーボードの使い方

key description
TAB / CTRL + I Show available items and choice them
Enter 終了
CTRL + W Delete from the cursor to the start of the word
CTRL + U Delete whole query
CTRL + F / Right Arrow (:arrow_right:) Move cursor a character to the right
CTRL + B / Left Arrow (:arrow_left:) Move cursor a character to the left
CTRL + A To the first character of the 'Filter'
CTRL + E To the end of the 'Filter'
CTRL + J Scroll json buffer 1 line downwards
CTRL + K Scroll json buffer 1 line upwards
CTRL + G Scroll json buffer to bottom
CTRL + T Scroll json buffer to top
CTRL + L Change view mode whole json or keys (only object)
ESC Hide a candidate box

個人的には

個人的には、巨大なJSONファイルって読みにくいしメンテしにくいだけだから嫌いなんだけどなぜかみんな使うし、付き合うのは仕方ないよね。

参考資料

https://www.softantenna.com/wp/review/jid/

Cockpitでリモートからブラウザ経由でLinuxを管理する

cockpit を試してみて良かったのでめも

Cockpit は、Debian/Ubuntuなどで利用できる管理ツールで、Webブラウザから操作ができる。

ターミナルが使えたり

ブラウザからターミナルが使えたり

f:id:takuya_1st:20180818193339p:plain

daemon プロセスを再起動できたり

ブラウザからsystemd のプロセスを再起動できたり、

f:id:takuya_1st:20180818193420p:plain

モニタリング。

ディスクの使用量やCPUメモリの使用量を確認したり

f:id:takuya_1st:20180818195751p:plain

vm / docker のプロセスを管理

vm や Docker のコンテナをパパッと再起動したり状態をみたり

f:id:takuya_1st:20180818195310p:plain

systemd の依存関係をGUIで見れるから便利

ぐちゃぐちゃになるSystemdの依存関係や管理が資格的に行えるのはメリットがある。systemdのdaemonやタイマーの一覧して表示するのに便利だと思う。

f:id:takuya_1st:20180818195610p:plain

スマホから操作するのに便利。

ちょっとした再起動を試すのに、スマホからパパッとできるのでいいですね。

Cockpit プロジェクトをインストール

Debain 9 ( stretch ) には、Ubuntuと違ってBackportsで提供されていました

backports の導入とインストール

backportsの導入

echo 'deb http://deb.debian.org/debian stretch-backports main' > \
 /etc/apt/sources.list.d/backports.list
apt-get update

インストール

sudo apt-get install cockpit

起動

起動はsystemd socket で行われるので通常は使わなくていいらしい?

ポートとListenアドレスの指定

デフォルトでは、グローバルIPもローカルIPもローカルループバックアドレスもお構いなしにリッスンしてしまうので、ポートを決めておく。

cp /lib/systemd/system/cockpit.socket  /etc/systemd/
cat /etc/systemd/system/cockpit.socket
[Unit]
Description=Cockpit Web Service Socket
Documentation=man:cockpit-ws(8)
Wants=cockpit-motd.service

[Socket]
ListenStream= 127.0.0.1:9090
ExecStartPost=-/usr/share/cockpit/motd/update-motd '' localhost
ExecStartPost=-/bin/ln -snf active.motd /run/cockpit/motd
ExecStopPost=-/bin/ln -snf /usr/share/cockpit/motd/inactive.motd /run/cockpit/motd

[Install]
WantedBy=sockets.target

リロード

systemctl stop cockpit.socket
systemctl daemon-reload
systemctl start cockpit.socket

後は適当に認証する。

nginx とかApache で認証したり、vpnssh port forwarding 経由で使えばいいですよね。

ログイン画面

ログインは、ローカルユーザー( /etc/passwd ) で行うので、総当りされると面倒だし。安易にグローバルIPに公開できないですね。

f:id:takuya_1st:20180818193254p:plain

ssh 経由で認証したり、kerberos 認証したりもできるってさ

参考資料

https://cockpit-project.org/guide/latest/listen.html

https://cockpit-project.org/running#debian

ウェブブラウザーから操作できる軽量管理ツール「Cockpit」

gihyo.jp

DebianのBackporstを利用する(ミラーサーバー経由

debian のバックポートを利用する。

debian のバックポートは、公式サービスになっています。

Debian -- ニュース -- backports サービスが公式になりました

sources.list.d に加える。

直接 /etc/apt/sources.list に追記してもいいのですが、sources.list.d で分割した方が管理しやすいと思います。

echo 'deb http://deb.debian.org/debian stretch-backports main' > \
 /etc/apt/sources.list.d/backports.list
apt-get update

ミラーサーバを利用する

ミラーサーバーを使った方がみんなが嬉しいだろうと思うので、ミラーサーバを(さくら)を使うことにする。

sakura-mirrorの場合

公式になったということは、Debianのミラーサーバにもdistとして用意されているということになる。

さくらのミラーサーバでのBackports

f:id:takuya_1st:20180818191435p:plain

ミラーサーバの場合のバックポーツの利用例

URLを変えるだけでいい。

echo 'deb http://debian-mirror.sakura.ne.jp/debian stretch-backports main' > \
 /etc/apt/sources.list.d/backports.list
apt-get update

バックポーツを指定したインストール

apt の man を見るとターゲットリリースが指定できるので、どのリリースを使うか指定できる

概要
       apt [-h] [-o=config_string] [-c=config_file] [-t=target_release] [-a=architecture] {list | search | show | update | install pkg [{=pkg_version_number | /target_release}]...  |
           remove pkg...  | upgrade | full-upgrade | edit-sources | {-v | --version} | {-h | --help}}

リリースを指定したインストール・検索

通常リリースや、backports を指定して検索して見る

stretch-backports を指定して検索

root@acid:~# apt search -t stretch-backports nodejs-dev
ソート中... 完了
全文検索... 完了
nodejs-dev/stretch-backports 8.11.1~dfsg-2~bpo9+1 amd64
  evented I/O for V8 javascript (development files)

stretch を指定

root@acid:~# apt search -t stretch nodejs-dev
ソート中... 完了
全文検索... 完了
nodejs-dev/stable 4.8.2~dfsg-1 amd64
  evented I/O for V8 javascript (development files)

まぁ公式なので気にせず使えるのがメリットですよね。

backports にあるパッケージを入れてみる

sudo apt install cockpit

ok

参考資料

https://q-three.com/archives/293#apt_jessie-backports

Debian -- ニュース -- backports サービスが公式になりました

Debian の backports を使う

man apt